0
我有一個WPF DataGrid,顯示帶數字的DataGridTextColumn。如果該值爲負值,我想以紅色顯示。<Style>找不到DataGridTextColumn的靜態資源
我的代碼編譯,但我得到一個運行時錯誤:
"Cannot find resource named 'PlusBlackMinusRedConverter'. Resource names are case sensitive."
我相信轉換器處於Window.Resources,但我的猜測是,當DataGrid的構造DATACELL,它不能找到窗口的.resources。只是一個猜測。
有誰知道什麼是真正的原因,以及如何使它工作?
XAML:
<Window x:Class="MyNameSpace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:MyNameSpace="clr-namespace:MyNameSpace">
<Window.Resources>
<MyNameSpace:TextDoubleToPlusBlackMinusRedConverter x:Key="PlusBlackMinusRedConverter " />
</Window.Resources>
<DockPanel>
<DataGrid Name="stocksDataGrid"
IsReadOnly="True"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Trend, StringFormat=P}"
Header="Trend">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.Foreground"
Value="{Binding Path=Text, Converter={StaticResource PlusBlackMinusRedConverter }}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</DockPanel>
</Window>
代碼:
using System;
using System.Globalization;
using System.Windows.Data;
namespace MyNameSpace {
public class TextDoubleToPlusBlackMinusRedConverter: IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
if (value is string){
double valueDouble;
if (double.TryParse((string)value, out valueDouble)){
if (valueDouble<0){
return "Red";
} else {
return "Black";
}
}
}
return "Gray";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}
}
謝謝你的解決方案。我嘗試了一切,但其他的眼睛往往更容易發現這樣的簡單錯誤。 – 2013-04-26 02:05:41