4

コード ビハインドと 'panels' の可視性の変更を使用してこれを行う方法がありますが、これを直接 xaml の方法で行うことができるのでしょうか?

4

2 に答える 2

5

true/false を Visibility に変換ElementNameする とともに を使用して、これをバインドできるはずです。IValueConverter

<Grid>
    <Grid.Resources>
        <local:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
    </Grid.Resources>
    <UserControl Visibility="{Binding ElementName=toggle,
                                      Path=IsChecked,
                                      Converter={StaticResource BoolToVisibilityConverter}}" 
    />
    <ToggleButton x:Name="toggle" />
</Grid>

そしてコンバーター:

public class BoolToVisibilityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var isChecked = (bool)value;
        return isChecked ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
于 2013-09-20T19:15:15.343 に答える
1

ここでは、以下のように行うことができます.. と の両方を親のコンテンツとして持つことができ、usercontrolトリガーtogglebuttonContentcontrol使用DataTemplateして、チェックされたステータスに応じてユーザーコントロールの可視性を設定できますToggleButton

       <ContentControl>
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <local:myusercontrol  x:Name="control"/>

                        <ToggleButton Content="click" x:Name="toggleBtn"/>
                    </StackPanel>
                    <DataTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="false"  SourceName="toggleBtn">
                            <Setter Property="Visibility" Value="Visible" TargetName="control"/>
                        </Trigger>
                        <Trigger Property="IsChecked" Value="true" SourceName="toggleBtn">
                            <Setter Property="Visibility" Value="Collapsed" TargetName="control"/>
                        </Trigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
于 2013-09-20T19:27:04.810 に答える