2017-07-11 14 views
0

我想向我的WPF UI添加一個紅/綠LED。下面給出了我的XAML文件和類的細節。WPF中的LED(紅/綠)綁定到某個函數

<ListView Grid.Column="1" Margin="10" Name="FVDataBinding"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <WrapPanel> 
       <TextBlock Text=" Status: " /> 
       <TextBlock Text="{Binding Status}" FontWeight="Bold" /> 
       <Ellipse x:Name="StatusEllipse" Fill="#388E3C" Height="20" Stroke="Black" Width="20"/> 
      </WrapPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

我的類實現低於

public class MyStatus 
{ 
    private string m_Name; 
    private bool m_status; 

    public bool Status 
    { 
      get { return m_status; } 
      set { m_status = value; } 
    } 
} 

如何鏈接我StatusEclipse的功能狀態,其中trueGreenfalseRed

+0

你需要一個轉換器,將轉換真/假以紅/綠。 –

+0

作爲@Nikhil建議的轉換器,對於這種情況是矯枉過正的。你真正需要的是一個帶'Setter'(默認顏色)和'DataTrigger'(非默認顏色)的'Style'。您可以將「true」或「false」作爲默認觸發器;只需使用另一個值作爲DataTrigger的'Value'。看到[這個答案](https://stackoverflow.com/a/34489299)的變化,其中兩種顏色是由觸發器設置(不需要,但它是另一種方式)。 –

+0

您也可以使用'Style'和'Triggers'來做到這一點。沒有額外的文件轉換器!純XAML。 – XAMlMAX

回答

1

你需要一個轉換器,將轉換真/假紅/綠。

在XAML

<Window.Resources> 
    <foobar:StatusConverter x:Key="StatusConverter" /> 
</Window.Resources 

<Ellipse x:Name="StatusEllipse" Fill="{Binding Status, Converter={StaticResource StatusConverter}}" Height="20" Stroke="Black" Width="20"/> 

在CS

public class StatusConverter : IValueConverter 
{ 
    public object Convert(.....) 
    { 
     //Check for value and return a SolidColorBrush instance. 
    } 

    public object ConvertBack(.....) 
    { 
     throw NotImplementedException(); 
    } 
} 
+0

Agarwal - 什麼是foobar? – liv2hak

+0

@ liv2hak:這是你在這個轉換器所在的名稱空間。 –