1

トグルボタンをカスタマイズして、チェックすると緑色で「はい」と表示され、チェックされていない場合は赤色で「いいえ」と表示されるようにしようとしています。

Styles リソース ディクショナリにある次のスタイルを作成しました。

<!--  ToggleButtons   -->
<Style x:Key="YesNoToggleStyle" TargetType="ToggleButton">
  <Style.Triggers>
    <Trigger Property="IsChecked" Value="True">
      <Setter Property="Background" Value="SpringGreen" />
      <Setter Property="Content">
        <Setter.Value>
          <TextBlock Text="Yes"/>
        </Setter.Value>
      </Setter>
    </Trigger>
    <Trigger Property="IsChecked" Value="False">
      <Setter Property="Background" Value="Crimson" />
      <Setter Property="Content">
        <Setter.Value>
          <TextBlock Text="No"/>
        </Setter.Value>
      </Setter>
    </Trigger>
  </Style.Triggers>
</Style>

これはうまくいきます...ちょっと。ToggleButton がいずれかの値の最後の 1 つである場合、正しく表示されます。同じ値を持つ以前のボタンはすべて空白です。高さも縮んでいましたが、トリガーの上にある「高さ」セッターで修正しました。説明すると、新しいレコードが作成されているときは次のようになります。

起動トグル ボタンボタン 1、2、3、および 1 をもう一度クリックした後:編集されたトグル ボタン

私は元々、周囲のグリッドから参照されたスタイルを持っていました:

<Grid>
  ...
    <Grid.Resources>
      <Style BasedOn="{StaticResource YesNoToggleStyle}" TargetType="{x:Type ToggleButton}" />
    </Grid.Resources>

しかし、各 ToggleButton がスタイルを個別に参照するように変更しても ( <ToggleButton Style="{StaticResource YesNoToggleStyle}" ... />)、違いはありません。

Customizing the toggle state of a toggle button in wpfOverride ToggleButton Styleを調べましたが、効果は同じですが、それらは外部画像について話し、私の問題はすべて wpf 内にあります。

また、2番目の回答も見ました。 トグルボタンがチェックされているときにトグルボタンの背景色を変更し、WPFでその逆を変更したいのです が、a) VS2012に付属のblend + sketchflowプレビューしかありません.b)私はまったく初心者です.ブレンドを使用し、回答の指示Select the "Checked State"から取得できません(さらに、このタスクにブレンドツールが必要なReset the Background Color場合は驚くでしょう)。

複数の ToggleButtons で同じスタイルを適切に使用するにはどうすればよいか教えてもらえますか?

4

3 に答える 3

3

これは私にとってはうまくいきます。のどこかDictionary1.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="YesNoToggleStyle" TargetType="{x:Type ToggleButton}" BasedOn="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}">
        <Style.Triggers>
            <Trigger Property="IsChecked" Value="False">
                <Setter Property="Background" Value="Crimson" />
                <Setter Property="Content" Value="No"/>
            </Trigger>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Background" Value="SpringGreen" />
                <Setter Property="Content" Value="Yes"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>

スタイルは に基づいていることに注意してくださいToolBar.ToggleButtonStyle

<Grid>
    <Grid.Resources>
        <ResourceDictionary Source="pack://application:,,,/Dictionary1.xaml"/>
    </Grid.Resources>

    <ItemsControl ItemContainerStyle="{StaticResource YesNoToggleStyle}">
        <ToggleButton />
        <ToggleButton />
        <ToggleButton />
    </ItemsControl>
</Grid>
于 2013-03-15T06:25:23.113 に答える