可能非常简单,但我无法找到需要更改的代码,以使其工作。我的媒体位看起来像这样:
当我点击任何一个按钮上的游戏时,所有其他三个按钮也会改变。
public void ButtonPlay1_OnClick(object sender, RoutedEventArgs e)
{
var context = DataContext as PlayButton.SampleContext;
if (context == null)
return;
context.IsPlaying = !context.IsPlaying;
}
public void ButtonPlay2_OnClick(object sender, RoutedEventArgs e)
{
var context = DataContext as PlayButton.SampleContext;
if (context == null)
return;
context.IsPlaying = !context.IsPlaying;
}
public void ButtonPlay3_OnClick(object sender, RoutedEventArgs e)
{
var context = DataContext as PlayButton.SampleContext;
if (context == null)
return;
context.IsPlaying = !context.IsPlaying;
}
我有三个不同的按钮按钮点击事件。我有一个类是BoolToVisabilityConverter,还有一个名为PlayButton的类,它只是检查按钮是否正在播放这是PlayButton类中的内容:
public partial class PlayButton : xamlNewAudit
{
public PlayButton()
{
InitializeComponent();
DataContext = new SampleContext();
}
public class SampleContext : INotifyPropertyChanged
{
private bool _isPlaying;
public bool IsPlaying
{
get { return _isPlaying; }
set
{
if (_isPlaying == value)
return;
_isPlaying = value;
OnPropertyChanged("IsPlaying");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
编辑:很抱歉,我只是想要它,所以当我点击其中一个按钮上的播放时,其他两个按钮会暂停。
编辑:按钮的Xaml代码是;
<Button x:Name="ButtonPlay" Height="45" Click="ButtonPlay1_OnClick" Margin="-2,0,57,60" DockPanel.Dock="Top">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse Stroke="Black" />
<Image Source="Images/PlayButton.png" Visibility="{Binding IsPlaying, ConverterParameter={x:Static Visibility.Hidden}, Converter={Application:BoolToVisibilityConverter}}" />
<Image Source="Images/pauseButton.png" Visibility="{Binding IsPlaying, ConverterParameter={x:Static Visibility.Visible}, Converter={Application:BoolToVisibilityConverter}}" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
这是第一个按钮的XAML代码,其他按钮的代码相同,但Click事件链接到不同的方法。
答案 0 :(得分:1)
您有三个Button
控件。您需要三个不同的IsPlaying
属性,每个属性Button
一个。您需要使用三个不同Click
属性的三个不同IsPlaying
处理程序。按照您的方式做事,您还需要三个不同的ControlTemplate
,它们也使用三种不同的IsPlaying
属性。
更新&gt;&gt;&gt;
有许多更简单的方法可以满足您的要求。一种方法是使用ToggleButton
而不是Button
。使用此功能,您可以忘记IsPlaying
属性,只需使用ToggleButton.IsChecked
值:
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid>
<Ellipse Stroke="Black" />
<Image Source="Images/PlayButton.png" Visibility="{Binding IsChecked,
ConverterParameter={x:Static Visibility.Hidden}, Converter={StaticResource
Application:BoolToVisibilityConverter}}" />
<Image Source="Images/pauseButton.png" Visibility="{Binding IsChecked,
ConverterParameter={x:Static Visibility.Visible}, Converter={StaticResource
Application:BoolToVisibilityConverter}}" />
</Grid>
</ControlTemplate>
你似乎已经宣布你的Converter
非常奇怪......甚至编译了吗?
答案 1 :(得分:0)
如果对IsPlaying的绑定对于所有三个按钮都相同,那么当IsPlaying更改时,所有三个按钮都将改变。更改的最简单方法是为每个按钮分配一个单独的IsPlaying属性。