버튼을 클릭하면 xaml로 내 listview의 컨트롤 템플릿을 설정할 수 있습니까?버튼을 클릭했을 때 listview의 컨트롤 템플릿을 바꿀 수 있습니다.
지금 내 ListViewItem
을 선택했을 때 내 contenttemplate을 설정하는 방법을 알고 있지만 목록 뷰 바깥에있는 내용이 변경되면 내 제어 템플릿을 변경하는 방법을 알지 못합니다.
해당 버튼을 클릭 할 때 RentTemplate
또는 BuyTemplate
을 사용하도록 ListItemTemplate
을 변경하고 싶습니다.
<Button x:Name="RentButton" />
<Button x:Name="BuyButton" />
<ListView Name="ItemsList">
<ListView.Resources>
<!-- unselected item template -->
<DataTemplate x:Key="DefaultItemTemplate">
</DataTemplate>
<!-- selected item template -->
<DataTemplate x:Key="SelectedItemTemplate">
</DataTemplate>
<DataTemplate x:Key="RentTemplate">
</DataTemplate>
<DataTemplate x:Key="BuyTemplate">
</DataTemplate>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<!-- set properties for all items -->
<Setter Property="ContentTemplate" Value="{StaticResource DefaultItemTemplate}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<!-- change what the selected item looks like -->
<Setter Property="ContentTemplate" Value="{StaticResource SelectedItemTemplate}" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
나는 (내 버튼을 클릭하면 내가 변경됩니다) 속성을 변경할 때 사용하는 어떤 템플릿을 선택 DataTriggers를 사용하기 위해 노력하고있어
편집. 나는이 상황이 이상적이라고 생각하지 않지만, 다른 어떤 방법을 모른다.
이제 문제는 동일한 MultiTrigger에서 Property 트리거와 DataTriggers를 혼합 할 수 없다는 것입니다.
내가 만들려고하는 시나리오는 다음과 같습니다. BuyButton
을 누르면 BuyTemplate
을보고 싶습니다. RentButton
과 동일하고 RentTemplate
입니다. 그러나 세 번째 버튼을 누를 때 OverviewButton
현재 ListBoxItem
이 선택되었는지 여부에 따라 두 개의 템플릿 중 하나를 선택하고 싶습니다.
아니면 DataTemplates 및 DataTriggers를 잘못 사용하고 있는데 더 좋은 방법이 있습니까?
<Window.Resources>
<!-- unselected item template -->
<DataTemplate x:Key="DefaultItemTemplate">
</DataTemplate>
<!-- selected item template -->
<DataTemplate x:Key="SelectedItemTemplate">
</DataTemplate>
<DataTemplate x:Key="RentTemplate">
</DataTemplate>
<DataTemplate x:Key="BuyTemplate">
</DataTemplate>
<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Property="IsSelected" Value="false"/>
<Condition Binding="{Binding SelectedType}" Value="Overview" />
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource DefaultItemTemplate}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Property="IsSelected" Value="true"/>
<Condition Binding="{Binding SelectedType}" Value="Overview" />
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource SelectedItemTemplate}" />
</MultiDataTrigger>
<DataTrigger Binding="{Binding SelectedType}" Value="Rent">
<Setter Property="ContentTemplate" Value="{StaticResource RentTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding SelectedType}" Value="Buy">
<Setter Property="ContentTemplate" Value="{StaticResource BuyTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
'DataTemplateSelector'를 검색하고있는 것 같습니다. 예를 들어이 자습서를 참조하십시오. http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector –
@FlatEric : 답변으로 사용 예제를 게시합니다. –