不是很多,只想要DXGrid的实例,我有一个LookUpEdit。 我正在使用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 ???
}
答案 0 :(得分:1)
您应该只能使用GetGridControl函数。
DevExpress GetGridControl Link
否则(理想情况下是上述作品)您可以使用以下内容,我将其用于需要查找父母等的地方。
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>();
编辑:
我误解了这里的问题是另一种让孩子接受的方法。
我以前曾尝试过很多不同的方法来做到这一点,但是没有办法,我已经尝试过所有的孩子等等。但实际上没有人得到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。
我知道它看起来不太干净,但这是我发现这个工作的唯一方法。
希望这有帮助, 理查德
答案 1 :(得分:1)
这是更好的方法。
void edt_PopupOpened(object sender, RoutedEventArgs e)
{
LookUpEdit edt = (LookUpEdit)sender;
Dispatcher.BeginInvoke((Action)(() =>
{
GridControl t = edt.GetGridControl();
// do something with a column... t.Columns["RecId"].Visible = false;
}), DispatcherPriority.Input);
}
或
void YourGridNameifItsInGrid_ShownEditor(object sender, EditorEventArgs e)
{
if (e.Editor is LookUpEdit)
{
LookUpEdit lookupEdit = (LookUpEdit)e.Editor;
GridControl gGridControl = lookupEdit.GetGridControl();
}
}