我在WPF中有一个数据网格,我绑定到一个对象.
我有一个DataGridCheckBoxColumn,我希望用户能够通过并勾选他们想要的那些.问题是他们必须点击两次,一次选择然后再次检查/取消选中.你究竟怎么把它关掉,我一直在寻找方法来寻找答案.datagrid具有SelectionMode和SelectionUnit属性 - 两者都不接受'none'或'go away'
任何帮助表示赞赏!我的代码在下面供参考
<my:DataGrid Margin="15" Name="dgPreview"
AutoGenerateColumns="False" CanUserSortColumns="True"
CanUserDeleteRows="True"
Background="White"
ColumnHeaderHeight="20"
VerticalScrollBarVisibility="Visible"
RowDetailsVisibilityMode="Visible"
>
<my:DataGrid.Columns>
<my:DataGridCheckBoxColumn MinWidth="50" Width="Auto" Header="Include" Binding="{Binding Include}" />
<my:DataGridTextColumn MinWidth="50" Width="Auto" Header="Override #" Binding="{Binding OverrideNumber}" />
<my:DataGridTextColumn MinWidth="220" Width="*" Header="Name" Binding="{Binding Name}" />
<my:DataGridTextColumn MinWidth="50" Width="Auto" IsReadOnly="True" Header="Preview" Binding="{Binding Preview}" />
</my:DataGrid.Columns>
</my:DataGrid>
Run Code Online (Sandbox Code Playgroud) 我尝试了以下方法:
<tk:DataGridTextColumn
Header="Item"
Binding="{Binding Item.Title}"
ToolTipService.ToolTip="{Binding Item.Description}" />
Run Code Online (Sandbox Code Playgroud)
我没有看到任何工具提示.
有任何想法吗?甚至实施了吗?
我尝试了以下操作,所有这些都在函数ScrollIntoView上失败并给出NullReferenceException:
// doesn't work
grid.SelectedItem = sItem;
grid.ScrollIntoView(sItem);
// doesn't work
grid.SelectedItem = sItem;
grid.Focus();
grid.CurrentColumn = grid.Columns[0];
grid.UpdateLayout();
grid.ScrollIntoView(sItem,grid.Columns[0]);
// doesn't work
grid.SelectedItem = sItem;
grid.UpdateLayout();
grid.ScrollIntoView(sItem);
Run Code Online (Sandbox Code Playgroud)
问题是,当我从代码隐藏中选择一行时,选择是不可见的 - 它位于底部的某个位置.除非用户滚动,否则他们会觉得选择已经消失.我需要将DataGrid滚动到用户可以看到选择的程度.
我也试过"BringIntoView",但没有运气.
问题
我有一个WPF工具包DataGrid,我希望能够在几个预设的列顺序之间切换.这是一个MVVM项目,因此列顺序存储在一个ViewModel.问题是,我无法获得为该DisplayIndex属性工作的绑定.无论我尝试什么,包括这个Josh Smith教程中的甜蜜方法,我得到:
带标题"ID"的DataGridColumn的DisplayIndex超出范围.DisplayIndex必须大于或等于0且小于Columns.Count.参数名称:displayIndex.实际值为-1.
这有什么解决方法吗?
我在下面提供了我的测试代码.如果您发现任何问题,请告诉我.
ViewModel代码
public class MainViewModel
{
public List<Plan> Plans { get; set; }
public int IdDisplayIndex { get; set; }
public int NameDisplayIndex { get; set; }
public int DescriptionDisplayIndex { get; set; }
public MainViewModel()
{
Initialize();
}
private void Initialize()
{
IdDisplayIndex = 1;
NameDisplayIndex = 2;
DescriptionDisplayIndex = 0;
Plans = new List<Plan>
{
new Plan { Id = 1, Name = "Primary", Description …Run Code Online (Sandbox Code Playgroud) 我见过很多旋转木马来展示WPF.我之前从未真正需要过.
有一个体面的免费吗?
我可以访问Dev Express,但是我正在制作一个开源项目,而不想把代码放在其他人不能轻易编译的代码中.
我使用带有LINQ to SQL的WPF Toolkit Datagrid
<my:DataGrid AutoGenerateColumns="False" Name="dataGrid2">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="Date" MinWidth="80"
Binding="{Binding Date, StringFormat=d}"
CanUserSort="False"/>
<my:DataGridTextColumn Header="Time" MinWidth="70"
Binding="{Binding Time}"
CanUserSort="False" />
<my:DataGridTextColumn Header="Description" MinWidth="200"
Binding="{Binding Description}"
CanUserSort="False"/>
</my:DataGrid.Columns>
</my:DataGrid>
Run Code Online (Sandbox Code Playgroud)
列Time绑定到Time数据类型的SQL Server表字段.现在,Datagrid上的时间值以hh:mm:ss格式显示.
我怎样才能将Datagrid的Time列中的时间represantation更改为hh:mm,删除秒?
编辑:使用 StringFormat=t没有结果.
<my:DataGridTextColumn Header="Time" MinWidth="70"
Binding="{Binding Time, StringFormat=t}"
CanUserSort="False" />
Run Code Online (Sandbox Code Playgroud) 是什么决定了同一控件上多个DepdencyProperties的评估顺序?
我正在使用Extended WPF Toolkit PropertyGrid并且绑定了SelectedObject和PropertyDefinitions:
<extToolkit:PropertyGrid AutoGenerateProperties="False" SelectedObject="{Binding ActiveDataPoint}" PropertyDefinitions="{Binding ActiveDataPoint.Properties}">
Run Code Online (Sandbox Code Playgroud)
问题是OnSelectedObjectChanged从依赖项属性触发,并且在该更改的处理程序中它引用了PropertyDefinitions,它被视为null.如果我注释掉OnSelectedObjectChanged处理程序,那么我可以看到调试OnPropertyDefinitionsChanged时调用OnSelectedObjectChanged.
public static readonly DependencyProperty PropertyDefinitionsProperty = DependencyProperty.Register( "PropertyDefinitions", typeof( PropertyDefinitionCollection ), typeof( PropertyGrid ), new UIPropertyMetadata( null, OnPropertyDefinitionsChanged ) );
public PropertyDefinitionCollection PropertyDefinitions
{
get
{
return ( PropertyDefinitionCollection )GetValue( PropertyDefinitionsProperty );
}
set
{
SetValue( PropertyDefinitionsProperty, value );
}
}
private static void OnPropertyDefinitionsChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
Console.Write("I changed!");
}
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register( "SelectedObject", typeof( object ), typeof( PropertyGrid ), new …Run Code Online (Sandbox Code Playgroud) 是否可以在运行时重新排列选项卡控件中的选项卡项?例如,我有3个关于汽车的标签项目和关于房子的4个标签.我希望能够使用拖放重新排列它们.它有可能还是它太棒了?
我有Tab Control这里是XAML.
<TabControl x:Name="tc" Visibility="Collapsed" GotFocus="Focus" AllowDrop="True" >
</TabControl>
Run Code Online (Sandbox Code Playgroud)
选项卡项将在运行时添加.谢谢你的帮助!
我想在wpf toolkit datagrid中隐藏单元格的边框(比如WPF网格的ShowGridLine属性).
我怎样才能实现这种行为?
如何在WPF Toolkit或扩展Toolkit的DateTimePicker中绑定Selected DateTime,因为我找不到SelectedDateTime属性?
我猜我可能需要将它与' Value '属性绑定,但我不确定.没有可用的文档.
我正在使用MVVM.
wpftoolkit ×10
wpf ×9
datagrid ×4
wpf-controls ×3
xaml ×3
c# ×2
binding ×1
c#-3.0 ×1
data-binding ×1
mvvm ×1
scroll ×1
selection ×1