私はフォームを持っています、それはグリッドを持っています。
列を自動生成し、必要に応じて微調整します。
if (e.PropertyName == "id")
{
System.Windows.Style style = new Style(typeof(DataGridCell));
style.Setters.Add(new Setter(DataGridCell.ContentTemplateProperty, CreateBtnTemplate(30)));
e.Column.CellStyle = style;
}
private static DataTemplate CreateBtnTemplate(int width)
{
string str = "<DataTemplate xmlns='http://schemas.microsoft.com/client/2007' >"
//+ "<Button Tag='{Binding id}' Content='Respond'
+ "<Button Tag='{Binding id}' Content='Respond' "
+ "Visibility='{Binding id, Converter={StaticResource myConverter}}'"
+ " />"
+ "</DataTemplate>";
return (DataTemplate)XamlReader.Load(str);
}
私のページxamlには、次のものがあります。
<Grid x:Name="LayoutRoot" Margin="0,0,4,0">
<Grid.Resources>
<my:EnableDisableConverter x:Name="myConverter" x:Key="myConverter"></my:EnableDisableConverter>
</Grid.Resources>
私のクラスは次のようになります。
public class EnableDisableConverter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Service1failedbackups f = value as Service1failedbackups;
if (f.resolution == null || f.resolution == "")
return System.Windows.Visibility.Visible;
else
return System.Windows.Visibility.Collapsed;
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{ return null;
}
}
つまり、「解像度」の内容が空白の場合は、ポップアップウィンドウから入力できるボタンが必要です。
今、それはすべてコンパイルされます、それはすべて良さそうです。(私の定義は
xmlns:my="clr-namespace:SilverlightApplication1"
ページヘッダーの一部として。
私が得るエラーは次のとおりです。
Error: Unhandled Error in Silverlight Application
Code: 2272
Category: ParserError
Message: Cannot find a Resource with the Name/Key myConverter
File:
Line: 1
Position: 121
これで、btnTemplateの可視性部分を配置するまでは、すべて問題ありません。ID列を使用したのは、ユーザーに表示する必要がないためです。
誰かが私が逃したことを教えてもらえますか?これは私を狂わせています。