2011-04-19 51 views
0

我有一個ListView幾個GridViewColumn。其中一列顯示圖層的可見性,並且我將圖標和不透明度綁定在一起,但我不確定如何將其綁定到名爲IsVisible的屬性,以便每當在該列中單擊某個項目時,它將切換IsVisible布爾值。簡單的GridViewColumn綁定問題

有關如何做到這一點的任何想法?

<GridViewColumn Width="20"> 
    <GridViewColumnHeader Content="X" /> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Width="18" 
       Height="18" 
       Source="{Binding VisibleIcon}" 
         Opacity="{Binding VisibleOpacity}" 
         /> 
      </StackPanel> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

此外,VisibleOpacity定義爲Opacity的圖標,但我覺得這是不這樣做,因爲我必須僅僅是爲了這個目的創建這個屬性的好方法。有沒有辦法在XAML內聯執行此操作?也許像:

Opacity = (this.IsVisible) ? 1 : 0.5; 

回答

2

編輯:好了,我想這應該是現在好了..

不過假設你收集的集合:

public class Effect : INotifyPropertychanged 
{ 
    //Some properties 


    private bool isVisible; 
    public bool IsVisible 
    { 
     get { return isVisible;} 
     set { isVisible=value;//plus raise propertychanged notification} 
    }  
} 

那麼我認爲傳播圖像的最簡單方法是點擊代碼屬性和圖像不透明度,將圖標包裝在切換按鈕中。這是我使用和測試的代碼。僅僅通過更換你的價值觀,並把這個數據中的模板,它應該很好地工作這段時間:

<ToggleButton x:Name="tgBtn" Height="20" Width="20" IsChecked="{Binding IsVisible}" 
       BorderThickness="0" Background="Transparent" > 
    <ToggleButton.Style> 
     <Style TargetType="{x:Type ToggleButton}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Image Width="18" 
          Height="18"     
          Source="C:\USERS\thumbnail.jpeg"> 
          <Image.Style> 
           <Style TargetType="{x:Type Image}"> 
            <Setter Property="Opacity" Value="1"/> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding ElementName=tgBtn, Path=IsChecked}" Value="false"> 
              <Setter Property="Opacity" Value="0.5"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Image.Style> 
         </Image> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 
+0

謝謝了'IsVisible'屬性是Effect'的'每個實例裏面,所以我做到了這一點,但沒」 t工作:'' 我做錯了嗎? – 2011-04-19 17:28:58

+0

如果列表數據綁定到具有IsVisible屬性的實例列表,我不認爲您需要{Binding}中的ElementName屬性,只是路徑。 – 2011-04-19 17:34:41

+0

感謝克雷格,它已經被列入清單。所以我應該使用'Binding =「{Binding Path = IsVisible}」'。這可以消除輸出窗口中打印的綁定錯誤,但是我看不到不透明度的變化。 – 2011-04-19 17:37:26