我已经定义了名为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在stackpanel中显示数据网格,并且成功地完成了这项工作。
现在,我想要的是,点击一个按钮,我想从datagrid访问所选的项目/索引并进行进一步处理。我想我错过了什么。谁能帮忙呢?
提前致谢。
答案 0 :(得分:0)
我使用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;
}**
}