メイン プログラム ウィンドウの下部にショートカット ボタンが並んでいます。を使用して別のウィンドウVisibility
でこれらの を選択可能にし、その状態をプログラムの に保存して、再度開いたときに以前の設定が記憶されるようにしようとしています。これを実装するために を見つけて使用しましたが、それ自体がその値を保持しているため、が保存されることを知っています。Settings
CheckBoxes
UserSettings
IValueConverter
Setting
CheckBox
問題は、 をクリックしてもボタンCheckBox
の に影響しないことVisibility
です。ウィンドウ自体の中で機能しSettings
ますが、異なるウィンドウ間で機能させる方法がわかりません。
UpdateSourceTrigger
&NotifyOnSourceUpdated
フラグの両方を実装しようとしましたが、役に立ちませんでした。誰でも問題を見ることができますか?
メイン ウィンドウ XAML
<WrapPanel.Resources>
<main:BooleanToHiddenVisibility x:Key="boolToVis" />
</WrapPanel.Resources>
<ToggleButton Name="alwaysOnTop" Checked="alwaysOnTop_Checked"
Style="{StaticResource ShortcutToggleStyle}" Unchecked="alwaysOnTop_Unchecked"
Visibility="{Binding Source=main:Properties.Settings.Default, Path=pinShow, Converter={StaticResource boolToVis}, Mode=TwoWay}" >
<Image SnapsToDevicePixels="True" Source="Images/pushpin.png"
ToolTip="Always on Top" />
</ToggleButton>
設定ウィンドウ XAML
<CheckBox Name="pinDisable" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center"
IsChecked="{Binding Source={x:Static main:Properties.Settings.Default}, Path=pinShow, Mode=TwoWay}"
Checked="pinDisable_Checked" Unchecked="pinDisable_Unchecked"/>
Convertere コード ビハインド
public class BooleanToHiddenVisibility : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Visibility rv = Visibility.Visible;
try
{
var x = bool.Parse(value.ToString());
if (x)
{
rv = Visibility.Visible;
}
else
{
rv = Visibility.Collapsed;
}
}
catch (Exception)
{
}
return rv;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}