Xaml 如何访问Telerik';从UWP的代码隐藏中删除RadDataGrid单元格内容?
我们的网格使用DataGridTemplateColumn在每列下显示texbox。我们有一个要求,使文本框只读,如果它包含任何数据(数据加载情况)。为了实现这一点,我们需要访问radgrid下的所有文本框控件。到目前为止,我们已经尝试了以下方法Xaml 如何访问Telerik';从UWP的代码隐藏中删除RadDataGrid单元格内容?,xaml,binding,uwp,telerik,grid,Xaml,Binding,Uwp,Telerik,Grid,我们的网格使用DataGridTemplateColumn在每列下显示texbox。我们有一个要求,使文本框只读,如果它包含任何数据(数据加载情况)。为了实现这一点,我们需要访问radgrid下的所有文本框控件。到目前为止,我们已经尝试了以下方法 使用VisualTreeHelper查找所有子控件-未找到文本框控件 已尝试使用DataBindingComplete事件 是否有任何方法可以从RadDataGrid的codebehind访问底层单元的控件 另一种方法:我们是否可以使用带有一些绑定
- 使用VisualTreeHelper查找所有子控件-未找到文本框控件
- 已尝试使用DataBindingComplete事件
<telerikGrid:RadDataGrid x:Name="grid" AutoGenerateColumns="False" VerticalAlignment="Center">
<telerikGrid:RadDataGrid.Columns>
<telerikGrid:DataGridTemplateColumn Header="Country">
<telerikGrid:DataGridTemplateColumn.CellContentTemplate>
<DataTemplate>
<TextBox Text="{Binding Country}" HorizontalAlignment="Center" VerticalAlignment="Center" IsReadOnly="{Binding IsReadOnly}"/>
</DataTemplate>
</telerikGrid:DataGridTemplateColumn.CellContentTemplate>
</telerikGrid:DataGridTemplateColumn>
<telerikGrid:DataGridTemplateColumn Header="Flag">
<telerikGrid:DataGridTemplateColumn.CellContentTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Flag}" />
</StackPanel>
</DataTemplate>
</telerikGrid:DataGridTemplateColumn.CellContentTemplate>
</telerikGrid:DataGridTemplateColumn>
</telerikGrid:RadDataGrid.Columns>
</telerikGrid:RadDataGrid>
公共密封部分类主页面:第页
{
ObservableCollection列表=新的ObservableCollection();
公共主页()
{
this.InitializeComponent();
添加(新数据{Country=“阿根廷”,Flag=“A”});
添加(新数据{Country=string.Empty,Flag=“B”});
添加(新数据{Country=“China”,Flag=“C”});
this.grid.ItemsSource=列表;
this.Loaded+=主页面_Loaded;
}
已加载专用异步void主页(对象发送方、路由目标)
{
等待任务。延迟(5000);
列表[1]。国家=“巴西”;
}
}
公共类数据:INotifyPropertyChanged
{
私人字符串(国家),;
公共字符串国家
{
获取{return\u Country;}
设置
{
_国家=价值;
if(string.IsNullOrEmpty(value))
{
IsReadOnly=true;
}
其他的
{
IsReadOnly=false;
}
RaiseProperty变更(“国家”);
}
}
私有字符串_标志;
公共字符串标志
{
获取{return\u Flag;}
设置
{
_标志=值;
升起财产变更(“旗帜”);
}
}
private bool\u IsReadOnly=false;
公共图书馆是只读的
{
获取{return\u IsReadOnly;}
设置
{
_IsReadOnly=值;
RaisePropertyChanged(“IsReadOnly”);
}
}
公共事件属性更改事件处理程序属性更改;
私有void RaisePropertyChanged(字符串PropertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(PropertyName));
}
}
}
恐怕您的解决方案不适用于我的案例。下面是我在运行代码片段后得到的屏幕截图:尽管第一行和最后一行的文本框包含文本(在前几秒钟),但文本框是可编辑的。我想让这两个textbosex成为只读的。其他文本框将处于可编辑状态。p、 我正在使用json的动态绑定。我没有任何用于绑定的特定模型。因此,我认为如果我能以任何方式访问控件,那将是最好的。p、 s.1:谢谢你的代码片段:)@user1814131我只是给你一个简单的代码示例,告诉你如何通过绑定动态设置IsReadOnly。如果要使这两个文本框在包含文本时为只读。您只需在Country
属性的if/else
块中更改代码逻辑即可。