WPF数据网格的错误?当一列切换的知名度与形象headercontent [英] wpf datagrid bug? when toggle visibility on a column with an image as headercontent

查看:208
本文介绍了WPF数据网格的错误?当一列切换的知名度与形象headercontent的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题。

如果我用一个形象的一个DataGrid的头,我得到一个错误,而切换的知名度。

 < D​​ataGridTextColumn标题={的StaticResource图片链接}的IsReadOnly =真>
 

错误:北DEM angegebenen元handelt ES SICH bereits嗯达斯logische untergeordnete元EINES anderen元素

唯一的解决方法我发现迄今是创建一个的ControlTemplate与我imageheadercolumns具体形象的foreach。

这是DataGrid的行为一个错误?

编辑:错误翻译由谷歌:指定的元素已经是另一个元素的逻辑子

编辑:样品

 <窗​​口x:类=WpfApplication1.MainWindow
    的xmlns =htt​​p://schemas.microsoft.com/winfx/2006/xaml/$p$psentation
    的xmlns:X =htt​​p://schemas.microsoft.com/winfx/2006/xaml
    标题=主窗口高度=350宽度=525>
    < Window.Resources>
    <的ResourceDictionary>
        < ResourceDictionary.MergedDictionaries>
        < ResourceDictionary中源=Dictionary1.xaml/>
        < /ResourceDictionary.MergedDictionaries>
    < / ResourceDictionary中>
    < /Window.Resources>
    <电网>
    <按钮内容=切换点击=Button_Click高度=20WIDTH =40的Horizo​​ntalAlignment =左/>
    < D​​ataGrid的宽度=200>
        < D​​ataGrid.Columns>
        < D​​ataGridTextColumn X:名称=colImage标题={的StaticResource AnyImage}>

        < / DataGridTextColumn>
        < /DataGrid.Columns>
    < /数据网格>
    < /网格>
< /窗>
 

ResourceDictionary中:

 < ResourceDictionary中的xmlns =htt​​p://schemas.microsoft.com/winfx/2006/xaml/$p$psentation
            的xmlns:X =htt​​p://schemas.microsoft.com/winfx/2006/xaml>

    <图像X:关键=AnyImage来源=Home.pngX:共享=假/>
< / ResourceDictionary中>
 

Button.Click:

 私人无效Button_Click(对象发件人,RoutedEventArgs E)
    {
        this.colImage.Visibility = this.colImage.Visibility == Visibility.Visible
                                       ? Visibility.Collapsed
                                       :Visibility.Visible;
    }
 

解决方案


**编辑:删除了previous答案这是不相关的 **

你需要把图像中列的HeaderTemplate中。 工作样本code

 <窗​​口x:类=WpfApplication1.MainWindow
        的xmlns =htt​​p://schemas.microsoft.com/winfx/2006/xaml/$p$psentation
        的xmlns:X =htt​​p://schemas.microsoft.com/winfx/2006/xaml
        XMLNS:地方=CLR的命名空间:WpfApplication1
        标题=主窗口高度=350宽度=525>
    < Window.Resources>
        <的BitmapImage X:关键=图片链接UriSource =test.bmp/>
    < /Window.Resources>
    <电网>
        < Grid.RowDefinitions>
            < RowDefinition高度=30/>
            < RowDefinition身高=*/>
        < /Grid.RowDefinitions>
        <按钮内容=按钮NAME =Button1的WIDTH =75点击=的button1_Click/>
        &所述;电网Grid.Row =1>
            <数据网格高度=200VerticalAlignment =热门>
                < D​​ataGrid.Columns>
                    < D​​ataGridTextColumn X:名称=firstHeader的IsReadOnly =真>
                        < D​​ataGridTextColumn.HeaderTemplate>
                            <的DataTemplate>
                                <图像源={的StaticResource图片链接}/>
                            < / DataTemplate中>
                        < /DataGridTextColumn.HeaderTemplate>
                    < / DataGridTextColumn>
                < /DataGrid.Columns>
            < /数据网格>
        < /网格>
    < /网格>
< /窗>
 


 私人无效的button1_Click(对象发件人,RoutedEventArgs E)
{
        firstHeader.Visibility = firstHeader.Visibility == Visibility.Visible? Visibility.Collapsed:Visibility.Visible;
}
 

i have the following problem.

if i use an image for a datagrid header i get an error while toggling visibility.

<DataGridTextColumn Header="{StaticResource Image_Link}" IsReadOnly="True">

Error: Bei dem angegebenen Element handelt es sich bereits um das logische untergeordnete Element eines anderen Elements.

the only workaround i found so far is to create a ControlTemplate with the specific image foreach of my imageheadercolumns.

is this datagrid behaviour a bug?

EDIT: Error translated by google: The specified element is already the logical child of another element.

EDIT: Sample

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Dictionary1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Window.Resources>
    <Grid> 
    <Button Content="Toggle" Click="Button_Click" Height="20" Width="40" HorizontalAlignment="Left"/>
    <DataGrid Width="200">
        <DataGrid.Columns>
        <DataGridTextColumn x:Name="colImage" Header="{StaticResource AnyImage}">

        </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>
    </Grid>
</Window>

ResourceDictionary:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Image x:Key="AnyImage" Source="Home.png" x:Shared="false"/>
</ResourceDictionary>

Button.Click:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.colImage.Visibility = this.colImage.Visibility == Visibility.Visible
                                       ? Visibility.Collapsed
                                       : Visibility.Visible;
    }

解决方案


**EDIT: Deleted the previous answer which wasn't relevant**

You will need to put the image in headertemplate of column. working sample code

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <BitmapImage x:Key="Image_Link" UriSource="test.bmp" />
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Content="Button" Name="button1" Width="75" Click="button1_Click" />
        <Grid Grid.Row="1">
            <DataGrid Height="200" VerticalAlignment="Top">
                <DataGrid.Columns>
                    <DataGridTextColumn x:Name="firstHeader" IsReadOnly="True">
                        <DataGridTextColumn.HeaderTemplate>
                            <DataTemplate>
                                <Image Source="{StaticResource Image_Link}"  />
                            </DataTemplate>
                        </DataGridTextColumn.HeaderTemplate>
                    </DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>
    </Grid>
</Window>


private void button1_Click(object sender, RoutedEventArgs e)
{
        firstHeader.Visibility = firstHeader.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
}

这篇关于WPF数据网格的错误?当一列切换的知名度与形象headercontent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆