저는 개발중인 MVVM 응용 프로그램에서 MultiSelectTreeView 컨트롤 (https://github.com/ygoe/MultiSelectTreeView)을 사용하려는 초보자 Visual Basic 개발자입니다. 이들을 함께 사용하는 것에 익숙해지기 위해 MultiSelectTreeView 데모를 VB로 번역하고 Catel을 사용하여 뷰 모델을 구현하기 시작했습니다.Catel이 모든 MultiSelectTreeView 속성을 인식하게 만드는 방법은 무엇입니까?
내가 발견 한 것은 Catel이 일부 MultiSelectTreeView 속성을 사용할 수 없게 만드는 것입니다. Catel를 사용하여 테스트를 실행에 데모 창이 열리고 대부분 예상대로 동작하지만 직접 실행 창 같은 오류의 수를 보여줍니다
System.Windows.Data Warning: 40 : BindingExpression path error: '(Controls:MultiSelectTreeView.HoverHighlighting)' property not found on 'object' ''MultiSelectTreeView' (Name='TheTreeView')'. BindingExpression:Path=(Controls:MultiSelectTreeView.HoverHighlighting); DataItem='MultiSelectTreeView' (Name='TheTreeView'); target element is 'MultiSelectTreeViewItem' (Name=''); target property is 'HoverHighlighting' (type 'Boolean')
비슷한 메시지가 MultiSelectTreeView IsKeyboardMode 및 ItemIndent 속성에 대한 존재를. 코드에서 또는 MainWindow XAML에서 직접 이러한 속성을 설정해도 아무 효과가 없으며 Catel을 사용하면 MultiSelectTreeView의 HoverHighlighting 효과가 더 이상 작동하지 않습니다.
테스트 프로젝트를 GitHub (https://github.com/AnotherKiwi/MultiSelectTreeViewDemoVB)에 업로드했습니다. 마스터 브랜치에는 모든 기능이 작동하는 MultiSelectTreeView 데모의 VB 변환이 들어 있습니다. ImplementingMainWindowViewModel 브랜치에서 Catel을 사용하여 뷰 모델을 구현하기 시작했습니다. 데모 작업의 대부분의 기능은 위에서 언급 한 속성과 관련된 기능을 제외하고 작동합니다.
Catel이 이러한 MultiSelectTreeView 속성을 방해하는 이유에 대한 안내를 누군가가 제공 할 수 있다면 정말 고맙겠습니다! 나는에 주어진 조언을 적용하는 시도
<controls:MultiSelectTreeView
x:Name="TheTreeView"
ItemsSource="{Binding RootNode.Children}"
AllowEditItems="{Binding AllowEditItems}"
VerticalRulers="{Binding VerticalRulers}">
<controls:MultiSelectTreeView.ContextMenu>
...
</controls:MultiSelectTreeView.ContextMenu>
<i:Interaction.Triggers>
...
</i:Interaction.Triggers>
<controls:MultiSelectTreeView.ItemContainerStyle>
<Style TargetType="{x:Type controls:MultiSelectTreeViewItem}">
<Setter Property="DisplayName" Value="{Binding DisplayName}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="IsEnabled" Value="{Binding IsEnabled, Mode=TwoWay}"/>
<Setter Property="IsVisible" Value="{Binding IsVisible, Mode=TwoWay}"/>
<Setter Property="IsEditable" Value="{Binding IsEditable, Mode=TwoWay}"/>
<Setter Property="IsEditing" Value="{Binding IsEditing, Mode=TwoWay}"/>
<Setter Property="Remarks" Value="{Binding Remarks}"/>
<Setter Property="IsKeyboardMode" Value="{Binding IsKeyboardMode, Mode=TwoWay}"/>
<Setter Property="HoverHighlighting" Value="{Binding HoverHighlighting}"/>
<Setter Property="ItemIndent" Value="{Binding ItemIndent}"/>
<Setter Property="ToolTip" Value="{Binding ToolTip}" />
<Setter Property="ContentTemplateEdit">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Border Background="YellowGreen" CornerRadius="3" Width="16" Height="16"/>
<controls:EditTextBox
Text="{Binding DisplayName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Padding="2,0,0,0"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</controls:MultiSelectTreeView.ItemContainerStyle>
<controls:MultiSelectTreeView.Resources>
<!--
Here the general item appearance is defined, for the ViewModel.TreeItemViewModel type
-->
<HierarchicalDataTemplate DataType="{x:Type vm:TreeItemViewModel}" ItemsSource="{Binding DataContext.Children}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding DataContext.ImageSource}" Width="16" Height="16" SnapsToDevicePixels="True"/>
<TextBlock Text="{Binding DataContext.DisplayName}" VerticalAlignment="Center" Padding="4,0,2,0"/>
</StackPanel>
</HierarchicalDataTemplate>
</controls:MultiSelectTreeView.Resources>
</controls:MultiSelectTreeView>
MainWindow.xaml에서 MultiSelectTreeView 컨트롤의 선언은 다음과 같다 @
일부 추가 정보는 @Geert에서 답 이후에 추가 Geert의 대답,하지만 응용 프로그램을 실행할 때 MultiSelectTreeView가 표시되지 않습니다. 저는 WPF에 익숙하지 않아 적절한 XAML 문을 수정하지 않을 것입니다. 이것에 대한 좀 더 많은 도움이 정말 감사 할 것입니다!
감사합니다 ItemsControl이 없습니다.) 차단합니까? –
의견을 확대 하시겠습니까 @ 제우스? –