私は完全にうまく機能するシンプルなトグルボタンを持っています。トグル ボタンをクリックして、表示される画像を変更できます。私が今やりたいことは、コードビハインドと同じことです。似ているリンクを見つけました
編集:これは私がやりたいことです
WPF ToggleButton.IsCheckedバインディングが機能しない必要があることを正確に伝える次のスレッドを読みました
プログラム的に、私のコードは何の効果もないようです。UIをクリックすると機能しますが、プログラム内から状態を変更したいです。以下のプログラムは単なるプロトタイプです。
XAML またはコードの何が問題なのかわかりません。最後に、すべてをテスト プログラムとして貼り付けることを決定しました。
XAML :
<Window x:Class="ToggleButtonImageChange.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ToggleButtonImageChange"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Image Source="secured.jpg"
x:Key="MyImage1" />
<Image Source="unsecured.jpg"
x:Key="MyImage2" />
<Style TargetType="{x:Type ToggleButton}"
x:Key="MyToggleButtonStyle">
<Setter Property="Content"
Value="{DynamicResource MyImage2}" />
<Style.Triggers>
<Trigger Property="IsChecked"
Value="True">
<Setter Property="Content"
Value="{DynamicResource MyImage2}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<ToggleButton Style="{StaticResource MyToggleButtonStyle}" Name="tgbtn" Margin="0,29,0,139" IsChecked="{Binding Path=isAdmin, Mode=TwoWay}"/>
</Grid>
</Window>
コードビハインド:
namespace ToggleButtonImageChange
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window,INotifyPropertyChanged
{
bool _isAdmin;
public MainWindow()
{
InitializeComponent();
isAdmin = true;
OnPropertyChanged("isAdmin");
}
public bool isAdmin
{
get
{
return _isAdmin;
}
set
{
_isAdmin = value;
OnPropertyChanged("isAdmin");
}
}
private void OnPropertyChanged(string p)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(p));
}
public event PropertyChangedEventHandler PropertyChanged;
}
デバッガーに入ると、isAdmin を true に設定しても、ボタン isChecked が false のままであるため、正しくない画像が表示されることがわかりました。何が間違っていたのか、コードを介して isChecked を変更する方法がよくわかりません。