【问题标题】:Access Selecteditem from Datagrid defined inside CustomControl WPF从 CustomControl WPF 中定义的 Datagrid 访问 Selecteditem
【发布时间】:2014-01-06 14:37:54
【问题描述】:

我定义了一个名为 MainView 的 CustomControl,如下所示:

public class MainView : ContentControl
    {
        static MainView()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(MainView), new FrameworkPropertyMetadata(typeof(MainView)));
        }
        public virtual void Show(MyClass obj)
        {
          this.DataContext = SomeMethodToGetListOfMyClass();
        }
    }

这是上述 CustomControl 的 Generic.xaml 代码

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:OneTouchCustomControlLib">
    <Style TargetType="{x:Type local:MainView}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:MainView}">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid Name="Maingrid">
                            <DataGrid Name="dtMainView"
                                Margin="10,10,10,10"
                                RowHeight="20"
                                AutoGenerateColumns="True"
                                ItemsSource="{Binding}"
                                HorizontalScrollBarVisibility="Visible"
                                VerticalScrollBarVisibility="Visible"
                                Height="auto" Width="auto">
                            </DataGrid>
                        </Grid>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

在另一个项目中,我使用此 CustomControl 在堆栈面板中显示数据网格并成功地做到了。

现在,我想要的是,单击按钮时,我想从数据网格访问选定的项目/索引并进行进一步处理。我想我错过了一些东西。任何人都可以帮助这样做..?

提前致谢。

【问题讨论】:

    标签: wpf datagrid custom-controls


    【解决方案1】:

    我使用 GetTemplateChild 方法得到了解决方案。 另外,从 Control 类继承了我的 CustomControl。

    这是新的 CustomControl 定义,

    public class MainView : Control
        {
            static MainView()
            {
                DefaultStyleKeyProperty.OverrideMetadata(typeof(MainView), new FrameworkPropertyMetadata(typeof(MainView)));
            }
            public virtual void Show(MyClass obj)
            {
              this.DataContext = SomeMethodToGetListOfMyClass();
            }
            **public void GetDatagrid()
            {
               return GetTemplateChild("dtMainView") as DataGrid;
            }**
        }
    

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 2014-01-09
      • 2021-12-08
      • 1970-01-01
      • 2011-12-11
      • 2015-08-04
      相关资源
      最近更新 更多