我需要根據綁定中的文本塊文本字符串值更改邊框背景顏色。我計劃使用觸發器,但在Silverlight中不受支持。我正在尋找任何有關如何在Silverlight中實現的建議。先謝謝你!如何根據Silverlight中的綁定值更改對象的顏色?
XAML:
<data:DataGridTemplateColumn Header="Y Position" Width="100">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Border Background="Red" Width="10" Height="18" VerticalAlignment="Center" Margin="0,0,10,0" />
<TextBlock Text="{Binding Y}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
視圖模型代碼:
public class MainPage_ViewModel : INotifyPropertyChanged
{
public
public MainPage_ViewModel()
{
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 1, Y = 2 }));
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 2, Y = 4 }));
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 3, Y = 6 }));
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 4, Y = 8 }));
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 5, Y = 10 }));
coordinates.Add(new Coordinate_DataViewModel(new Coordinate_Model() { X = 6, Y = 12 }));
}
public ObservableCollection<Coordinate_DataViewModel> Coordinates
{
get { return coordinates; }
set
{
if (coordinates != value)
{
coordinates = value;
OnPropertyChanged("Coordinates");
}
}
}
private ObservableCollection<Coordinate_DataViewModel> coordinates = new ObservableCollection<Coordinate_DataViewModel>();
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void DeleteCoordinate(Coordinate_DataViewModel dvmToDelete)
{
coordinates.Remove(dvmToDelete);
}
public void UpdateCoordinate(Coordinate_DataViewModel dvmToDelete)
{
}
}
//Model
public class Coordinate_Model
{
public double X;
public double Y;
}
//DataViewModel
public class Coordinate_DataViewModel
{
public Coordinate_DataViewModel(Coordinate_Model model)
{
this.underlyingModel = model;
}
private Coordinate_Model underlyingModel;
public double X
{
get { return underlyingModel.X; }
set { underlyingModel.X = value; }
}
public double Y
{
get { return underlyingModel.Y; }
set { underlyingModel.Y = value; }
} public string XYCoordinate
{
get { return "(" + X + "," + Y + ")"; }
}
}
我很難理解它。當值改變時,我需要能夠更新顏色。我更新了我的初始代碼以顯示我的ViewModel代碼。我可以在那裏設置屬性值。我不確定當值更新時如何工作。再次感謝你! – vladc77 2011-03-21 03:22:47
然後,您實際上必須在您的ViewModel上擁有Brush屬性(或任何與Silverlight等價的功能;我通常在WPF中會這樣認爲),您將按照我剛剛添加的示例中給出的那樣綁定更多或更少的屬性。 – 2011-03-21 06:19:22
非常感謝您的示例代碼。儘管我在Silverlight中提供了ChangePropertyAction,但我更喜歡你的方法。我會盡力實現你的方式。再次感謝你!!! – vladc77 2011-03-21 07:14:40