2

この質問で正確に解決する必要がありますが、残念ながらそれはSilverlight用であり、その「インタラクティブ」ライブラリを機能させることができませんでした。

私はプロパティを持っていて、チェックされているときは「こんにちは」に、チェックされていないときは「さようなら」にToggleButton変更したいと思います。Content状態の変更は複数のソースから実行できるため、この場合、手動で変更することはできません。

このタスクにはコンバーターが必要になる可能性があると思います。また、文字列ではなく可視性へのコンバーターを見てきました。

編集:両方の単語をスタックパネルに入れ、状態にバインドされた Visible/Collapsed の可視性を切り替えることを考えました:

         <ToggleButton.Content>
          <StackPanel>
              <TextBlock Text="Hello" Visibility="{Binding ...}"/>
              <TextBlock Text="GoodBye"/>
          </StackPanel>
      </ToggleButton.Content>
4

2 に答える 2

5

トリガーを使用できます:

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="ToggleButton">
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Content" Value="Hello" />
                </Trigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter Property="Content" Value="Good bye" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>

System.Windows.Interactivity.dll を使用する場合は、Microsoft Expression Blend ソフトウェア開発キット (SDK) (ダウンロード リンク)で見つけることができます。

于 2013-07-30T17:51:35.690 に答える
1

BooleanToSalutation を実装できます。

public class BooleanToSalutationConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is Boolean)
        {
            return (bool)value ? "Hello" : "Good bye";
        }

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is string)
        {
            return ((string)value) == "Hello";
        }

        return value;
    }
}
于 2013-07-30T17:51:33.573 に答える