3
treeViewItem에 연결하려는 간단한 종속성 속성을 만들었습니다. 버튼과 같은 다른 컨트롤에 대해 비슷한 작업을 수행했지만 TreeViewItem을 사용하는 방법을 알 수는 없습니다. 내 정의 된 스타일을 잃지 않고 treeview에서. 아래 코드에서 " 'ErrorTreeViewItem'형식의 스타일은 'TreeViewItem'형식에 적용 할 수 없습니다." WPF의 TreeViewItem을 서브 클래 싱하고 treevview에서 사용하는 방법
public class ErrorTreeViewItem : TreeViewItem
{
static ErrorTreeViewItem()
{
}
public bool ErrorState
{
get { return (bool)GetValue(ErrorStateProperty); }
set { base.SetValue(ErrorStateProperty, value); }
}
public static readonly DependencyProperty ErrorStateProperty =
DependencyProperty.Register("ErrorState", typeof(bool), typeof(ErrorTreeViewItem), new UIPropertyMetadata(false));
}
처럼 내 트리 뷰의 스타일이 보인다 : 그래서 당신이 먼저 필요가 만들 수 있도록
<TreeView Name="ApplicationTree" ItemsSource="{Binding Applications}" HorizontalContentAlignment="Stretch" Background="#E8E8E8" >
<TreeView.ItemContainerStyle>
<Style TargetType="me:ErrorTreeViewItem" BasedOn="{StaticResource {x:Type TreeViewItem}}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</TreeView.ItemContainerStyle>
내장 된 유효성 검사 서비스를 사용하고 계시지 않습니까? (이해하기 힘듭니다!) 올바른 존재인지 몰랐기 때문에 내장 된 유효성 검사 서비스를 사용하지 않습니까? IDataErrorInfo. – Will
아니, 그냥 내 의존성 속성의 값을 기반으로 treeview 항목의 색상을 변경하고 싶지 않다. 이게 어려울 거라고 생각하지 않았어! – user1145533
글쎄, 여러 가지 방법이 있습니다. 모델의 IDataErrorInfo (MVVM을 사용하는 경우)는 자동으로 유효성 검사를 트리거하고 표준 WPF 컨트롤에 유효하지 않은 템플릿을 표시합니다. 당신은 또한 TreeViewItem에 첨부 된 DependencyProperty를 사용하여 시도 할 수 있습니다. * 기본 클래스를 확장하는 등의 작업이 필요하지 않습니다. * WPF에서는 이런 방식으로 작업을 해본 적이 없지만, WinForms에서이 작업을 수행하는 것을 알고 있습니다. TreeView 클래스도 확장 할 수 있으므로 새 TVI를 만들면 대신 해당 유형의 인스턴스를 반환합니다. 그것은 당신의 오류가 자르기하는 곳입니다. – Will