没什么好说的,只是想要我有 LookUpEdit 的 DXGrid 实例。我正在使用 WPF。
mylookupedit1.GridControl <-- ???
编辑:
下面是一些示例代码:
<UserControl.Resources>
<ControlTemplate x:Key="gridTemplate">
<dxg:GridControl x:Name="PART_GridControl">
<dxg:GridControl.View>
<dxg:TableView Name="view"
AutoWidth="False"
BestFitMode="AllRows"
BestFitArea="All"
AllowBestFit="True"/>
</dxg:GridControl.View>
</dxg:GridControl>
</ControlTemplate>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="6"/>
<RowDefinition Height="auto "/>
</Grid.RowDefinitions>
<dxe:ButtonEdit Grid.Row="0" Name="beSearch"/>
<dxg:LookUpEdit Grid.Row="2" Name="leLookUp"
ShowSizeGrip="True"
SelectedIndex="0"
AutoPopulateColumns="True"
IsPopupAutoWidth="True"
ItemsSource="{Binding}"
PopupMaxWidth="600"
PopupContentTemplate="{StaticResource gridTemplate}"
/>
</Grid>
在我的代码中我有:
private void mymethod(IEnumerable itemsSource)
{
leLookUp.ItemsSource = itemsSource;
object o = leLookUp.FindParentOfType<GridControl>();
// o is null
// how could i access PART_GridControl ???
}
您应该能够只使用 GetGridControl 函数。
DevExpress GetGridControl Link
否则(最好是上面的工作)你可以使用下面的,我在一些需要找到 parent 等的地方使用它。
private static DependencyObject FindParent(this DependencyObject obj, Predicate<DependencyObject> where)
{
var parent = VisualTreeHelper.GetParent(obj);
if (parent == null || where(parent))
{
return parent;
}
return parent.FindParent(where);
}
public static T FindParentOfType<T>(this DependencyObject obj) where T : DependencyObject
{
return (T) FindParent(obj, x => x is T);
}
那么你就可以走了:
var grid = mylookupedit1.FindParentOfType<GridControl>();
编辑:
我误解了这里的问题是另一种获取 child 的方法。
我以前尝试过很多不同的方法来做到这一点,但是没有一个奏效,我尝试过遍历所有子项等等。但是没有一个真正得到 GridControl。所以我们所做的是:
在 GridControl 的声明中,添加一个 Loaded 事件:
<dxg:GridControl Name="PART_GridControl" Loaded="LoadedEvent">
然后在后面的代码中,创建一个变量来存储网格:
private GridControl theGridInTheControlTemplate;
然后您可以实现 LoadedEvent 处理程序:
private void LoadedEvent(object sender, RoutedEventArgs e)
{
theGridInTheControlTemplate = (GridControl)sender;
}
现在您可以在代码中使用 GridInTheControlTemplate。
我知道它看起来不太干净,但这是我发现它起作用的唯一方法。
希望对您有所帮助,理查德
我是一名优秀的程序员,十分优秀!