2

我有一个表格,它有一个网格。

我自动生成列并根据需要调整它们:

    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 列,因为我不需要用户查看它。

拜托,谁能告诉我我错过了什么。这让我发疯了。

4

1 回答 1

1

我修好了它

就是这样。

在我添加的 xaml 文件中

xmlns:converter="clr-namespace:SilverlightApplication1"

然后在网格下我添加了

    <converter:EnableDisableConverter x:Name="myConverter" x:Key="myConverter" />
    <DataTemplate x:Key="DataTemplate" >
        <Button Visibility='{Binding Converter={StaticResource myConverter}}' Content='Respond' Click="btnRespond_Click" />
    </DataTemplate>
    <DataTemplate x:Key="err" >
        <TextBlock Text='{Binding err}' FontSize='8'  TextWrapping='Wrap'/>
    </DataTemplate>
    <DataTemplate x:Key="resolution" >
        <TextBlock Text='{Binding resolution}' FontSize='8'  TextWrapping='Wrap'/>
    </DataTemplate>
</Grid.Resources>

然后我放弃了所有列的自动生成并设置

    <sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn  CellTemplate="{StaticResource DataTemplate}" Header="Action" Width="Auto" />
        <sdk:DataGridTextColumn Binding="{Binding server}"  Header="server" Width="Auto" />
        <sdk:DataGridTextColumn Binding="{Binding software}"  Header="software" Width="Auto" />
        <sdk:DataGridTextColumn Binding="{Binding backupgroup}"  Header="backupgroup" Width="Auto" />
        <sdk:DataGridTemplateColumn  CellTemplate="{StaticResource err}" Header="Action" Width="250" />
        <sdk:DataGridTemplateColumn  CellTemplate="{StaticResource resolution}" Header="Action" Width="150" />
        <sdk:DataGridTextColumn Binding="{Binding resolver}"  Header="resolver" Width="Auto" />
    </sdk:DataGrid.Columns>

现在它可以工作了。现在它翻转工作..欢呼

于 2011-06-22T14:58:11.450 回答