2013-07-03 58 views
0

假設我有n個矩形。 我希望他們表現得如此,當我點擊任何矩形時,它應該被填充爲白色,其他所有應該填充黑色。使用表達式混合使矩形像RadioButton一樣工作

我知道我可以創建一個風格。但是,當創建樣式時,我可以告訴用黑色填充矩形的觸發器,但我怎麼能說用白色填充所有剩餘的矩形。

任何人都可以建議我嗎? 我只想要一個小提示。

+0

爲什麼你需要使用矩形?爲什麼不把'RadioButton'模板化爲矩形? – dkozl

回答

2

不要使矩形像RadioButtons那樣工作,使RadioButtons看起來像矩形。
我建議使用RadioButton而不是改變模板,使其看起來像矩形。然後您可以根據RadioButton.IsChecked屬性觸發更改背景。這樣RadioButton將負責勾選/取消勾選操作,並在同一組中的其他RadioButtons中觸發背景更改。

<Style TargetType="{x:Type RadioButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type RadioButton}"> 
       <Border BorderBrush="Black" BorderThickness="1" Background="Black" x:Name="PART_Border"> 
        <ContentPresenter/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="True"> 
         <Setter TargetName="PART_Border" Property="Background" Value="White"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,並使用你的RadioButton這樣的:

<RadioButton> 
    <RadioButton.Content> 
     <!-- content to be displayer inside border --> 
    </RadioButton.Content> 
</RadioButton> 
+0

謝謝。這是你的好建議。現在我在裏面有一個矩形和圖像。它們都被綁定到ViewBox中。現在我有5個這樣的視框。我試圖將它們轉換爲RadioButtons。我在這裏成功了。但是現在問題出現了。我希望所有五個RadioButton都有不同的圖像。 – Khushi

+0

@ user2524507更新了我的答案。基本上把'ContentPresenter'放在'Border'裏面,當你添加RadioButton時,指定它的內容是你的圖片 – dkozl

+0

Ya,它解決了這個問題。 – Khushi

1

你自己回答了這個問題。拿兩個單選按鈕並嘗試編輯模板。基本上,當你仔細看看模板時,你會發現一個橢圓點,其點擊鼠標的可見性將被切斷。

而不是橢圓你可以有一個長方形/邊框有一定的厚度,並設置其鼠標點擊時的背景顏色

+0

謝謝。這是你的好建議。現在我在裏面有一個矩形和圖像。它們都被綁定到ViewBox中。現在我有5個這樣的視框。我試圖將它們轉換爲RadioButtons。我在這裏成功了。但是現在問題出現了。我希望所有五個RadioButton都有不同的圖像。 – Khushi