C# 使用数据触发器更改边框控件的内容
我有一个名为“Popup”的C# 使用数据触发器更改边框控件的内容,c#,wpf,C#,Wpf,我有一个名为“Popup”的网格,它的可见性通过booltVisibilityConverter绑定到viewmodel中的Bool 这非常有效,但我想通过根据viewmodel中的另一个Bool设置Border控件的内容,并使用booltVisibilityConverter来为多个用户控件重新使用它 这是我到目前为止所拥有的,但显然它不起作用,而且我在网上找不到任何答案。有人有什么想法吗 <Grid x:Name="PopUp" Visibility="{Binding ShowPop
网格,它的可见性通过booltVisibilityConverter
绑定到viewmodel中的Bool
这非常有效,但我想通过根据viewmodel中的另一个Bool
设置Border
控件的内容,并使用booltVisibilityConverter来为多个用户控件重新使用它
这是我到目前为止所拥有的,但显然它不起作用,而且我在网上找不到任何答案。有人有什么想法吗
<Grid x:Name="PopUp" Visibility="{Binding ShowPopUp, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Grid.Column="1" Grid.Row="1">
<Border.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ShowView1}" Value="true">
<Setter Property="ContentControl.Content">
<Setter.Value>
<view:View1/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Grid>
我找到了灵感
我必须创建一个ContentControl
,然后使用DataTrigger
将模板
设置为包含我的UserControl
的边框
,这与我之前尝试的方式非常相似
<Grid x:Name="PopUp" Visibility="{Binding ShowPopUp, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ContentControl Grid.Row="1" Grid.Column="1">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowView1}" Value="true">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border>
<view:View1/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
我找到了灵感
我必须创建一个ContentControl
,然后使用DataTrigger
将模板
设置为包含我的UserControl
的边框
,这与我之前尝试的方式非常相似
<Grid x:Name="PopUp" Visibility="{Binding ShowPopUp, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ContentControl Grid.Row="1" Grid.Column="1">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowView1}" Value="true">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border>
<view:View1/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
Border没有ContentControl,因此您无法设置内容属性。明白,但我可以在边框中显示用户控件,因此必须有一种方法通过样式将边框的内容设置为用户控件,然后触发,对吗?请熟悉WPF在线文档。在XAML中声明边框内的元素将设置边框的子属性。好的,我知道我的方法不正确。然而,我仍然不确定如何达到我所期待的效果。你能推荐一个合适的替代方案吗?谢谢@Clemens提供关于设置边框的子属性的提示,它引导我找到了我想要的答案。边框不是ContentControl,所以你不能设置内容属性。明白,但我可以在边框中显示用户控件,因此,必须有一种方法通过样式将边框的内容设置为用户控件,然后触发,对吗?请熟悉WPF在线文档。在XAML中声明边框内的元素将设置边框的子属性。好的,我知道我的方法不正确。然而,我仍然不确定如何达到我所期待的效果。您能推荐一个合适的替代方案吗?感谢@Clemens提供有关设置边框的子属性的提示,它引导我找到了我想要的答案。请注意-还有另一种方法,请参阅以获取详细信息。如果您想在有关数据的模板之间切换,也可以使用DataTemplateSelector。谢谢!我会看一看。请注意-还有另一种方法,详情请参见。如果您想在有关数据的模板之间切换,也可以使用DataTemplateSelector。谢谢!我来看看。