我有一个网格和一个上下文菜单。现在我有另一个切换按钮,它将执行其他一些活动。
现在我想要这两个行为
我写过booltoVisibility转换器它工作正常。
<ContextMenu Visibility="{Binding RunViewModel.PlayModel.Active,Mode=OneWay, Converter={StaticResource ResourceKey=BoolToVisibilityConverter}}">
public class BoolToVisibilityConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Visibility visibility = Visibility.Collapsed;
if (value!=null)
{
visibility = (bool)value ? Visibility.Collapsed : Visibility.Visible;
}
return visibility;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
RunViewModel.PlayModel.Active与切换按钮的IsChecked绑定。
现在的问题是, 当按钮被选中并且我右键单击然后它工作正常但是当取消选中切换按钮它回来在屏幕上时,我已经使绑定一个仍然存在问题。
任何人都可以帮助我...... !!
答案 0 :(得分:0)
试试这个
Visibility="{Binding PlacementTarget.DataContext.PlayModel.Active, RelativeSource={RelativeSource Mode=Self}}"
答案 1 :(得分:0)
使用DataTrigger
而不是IConverter
尝试执行此操作会有更多好运。试试这段代码,当Button.ContextMenu
属性值为null
时,会将ToggleButton.IsChecked
设置为True
:
<Grid>
<ToggleButton Name="ToggleButton" Content="Check me" Width="100" Height="25"
Margin="0,60,0,0" />
<Button Content="Click me" Margin="0" Width="100" Height="25">
<Button.Resources>
<ContextMenu x:Key="ContextMenu">
<MenuItem Header="Option 1" />
<MenuItem Header="Option 2" />
</ContextMenu>
</Button.Resources>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="ContextMenu" Value="{StaticResource ContextMenu}" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked,
ElementName=ToggleButton}" Value="True">
<Setter Property="ContextMenu" Value="{x:Null}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>