Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF是否允许强制转换数据网格以键入visual?_C#_.net_Wpf_Xaml_Grid - Fatal编程技术网

C# WPF是否允许强制转换数据网格以键入visual?

C# WPF是否允许强制转换数据网格以键入visual?,c#,.net,wpf,xaml,grid,C#,.net,Wpf,Xaml,Grid,我在WPF中有一个数据网格,如下所示。我需要在代码隐藏中将其作为Visual类类型的对象传递。这在WPF中可能吗?是的,你可以 Xaml: <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

我在WPF中有一个数据网格,如下所示。我需要在代码隐藏中将其作为Visual类类型的对象传递。这在WPF中可能吗?是的,你可以

Xaml:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <DataGrid  x:Name="MyGrid" ItemsSource="{Binding Items}" AutoGenerateColumns="False" Grid.Row="1">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Image Source="{Binding Image}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
        <Grid.Background>
            <VisualBrush Visual="{Binding Visual}"/>
        </Grid.Background>

    </Grid>
</Window>


下面是您可以在后端代码中执行的操作。Simplay将控件指定给Visual

    public class VM
    {
        public Visual Visual { get; set; }
    }
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new VM {Visual = MyGrid};
        }
    }
公共类虚拟机
{
公共视觉{get;set;}
}
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=newvm{Visual=MyGrid};
}
}
也可以使用

 <VisualBrush Visual="{Binding ElementName=MyGrid}"/>

A
DataGrid
是一个
可视的
,因此您只需要在XAML标记中为元素分配一个
x:Name

<DataGrid x:Name="dg" ItemsSource="{Binding Items}" AutoGenerateColumns="False" > 
...

有没有关于这方面的文档我可以阅读更多
Visual v = dg;