コード ビハインドと 'panels' の可視性の変更を使用してこれを行う方法がありますが、これを直接 xaml の方法で行うことができるのでしょうか?
質問する
3003 次
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
トリガーtogglebutton
をContentcontrol
使用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 に答える