wpf中基于数据源的用户控件的Hid部分

本文关键字:用户 控件 Hid 部分 数据源 wpf | 更新日期: 2023-09-27 18:28:50

我有一个user control,它包含两个形状,一个椭圆和一个矩形。如果我要绑定的数据源设置为false,我想隐藏矩形,如果设置为true,则隐藏可见矩形。椭圆也是如此。

所以在我的情况下,我如何根据ismale布尔设置椭圆的可见性。还基于isFemale bool设置矩形可见性?

用户控制

<UserControl> 
    <Grid HorizontalAlignment="Center" VerticalAlignment="Center" 
    MinWidth="200" MinHeight="120">
      <Rectangle Fill="Gray" Margin="5" />
      <Ellipse Fill="Red" Margin="5" />
    </Grid>
</UserControl>

我在mvvm设置中数据绑定到的类对象的伪代码。

class Person
{
    public bool IsMale {get;set;}
    public bool IsFemale {get;set;}
    public string Name {get;set;}
} 

wpf中基于数据源的用户控件的Hid部分

您可以简单地对形状的每个Style使用DataTrigger

<UserControl> 
    <Grid HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          MinWidth="200" 
          MinHeight="120">
      <Rectangle Fill="Gray" Margin="5">
        <Rectangle.Style>
            <Style TargetType="Rectangle">
                <Setter Property="Visibility" Value="Collpased"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsFemale}" Value="True">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Rectangle.Style>
      </Rectangle>
      <Ellipse Fill="Red" Margin="5">
        <Ellipse.Style>
            <Style TargetType="Ellipse">
                <Setter Property="Visibility" Value="Collpased"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsMale}" Value="True">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Ellipse.Style>
      </Ellipse>
    </Grid>
</UserControl> 

此外,请注意,UserControl的DataContext的类型必须为Person对象。