我正在寻找一种方法来查找Window类型的所有控件,
例如:查找全部TextBoxes
,找到实现特定接口的所有控件等.
WPF中a ControlTemplate
和a有什么区别DataTemplate
?
我想在WPF中将枚举值作为命令参数传递,使用如下所示:
<Button
x:Name="uxSearchButton"
Command="{Binding Path=SearchMembersCommand}"
CommandParameter="SearchPageType.First"
Content="Search">
</Button>
Run Code Online (Sandbox Code Playgroud)
SearchPageType
是一个枚举,这是要知道从哪个按钮搜索命令被调用.
这在WPF中是否可行,或者如何将枚举值作为命令参数传递?
我经历过的大多数MVVM示例都使用了Model实现INotifyPropertyChanged,但在Josh Smith的CommandSink示例中 ,ViewModel实现了INotifyPropertyChanged.
我还在认知上把MVVM概念放在一起,所以我不知道是否:
您曾参与MVVM项目的其他经历是什么?
我一直在试图弄清楚如何组织我的ResourceDictionary文件以便重用并与我团队的其他成员共享.
我一直遇到"Generic.xaml",但如果我在MSDN上查看Generic.xaml或者只是进行谷歌搜索,我似乎只会发现博客文章和论坛问题 - 我似乎无法打击任何真正权威和清晰的东西.
Generic.xaml和MyRandomlyNamedResourceDictionary.xaml有什么区别?看起来无论哪种方式,我都必须使用Source属性引用存储在库中的ResourceDictionaries.例如,:
<Application.Resources>
<ResourceDictionary
Source="/CommonLibraryWpfThemes;component/Themes/Generic.xaml"
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
那么Generic.xaml有什么优势呢?如果我不试图给我的应用程序多个"外观"(即,如果我只有一个主题),它是否有任何目的?
我不时在这里构建我的解决方案(其中包含7个项目)我在Visual Studio 2010 Premium ed中得到了可怕的'命令副本退出代码4'错误.
这是因为后期构建事件无法通过.
这是暂时解决问题的方法
以下是构建后事件的样子:
xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y
Run Code Online (Sandbox Code Playgroud)
当您使用代码[插入值]错误退出命令副本时,通常会出现以下情况:
然而 - 显然有时我构建解决方案时,没有问题.
仅供参考,两周前我卸载了ReSharper 5.1.1,Visual Studio从那时起就给了我一些错误(其中无法调试).我重新安装了Visual Studio,从那以后它运行得更好,但仍然遇到了这个问题.它可能与某些ReSharper的某些东西有关吗?
你有同样的问题并解决了吗?或者你有任何可能的解决方案吗?
干杯.
我有一个ListBox
绑定到ViewModel上的子集合.列表框项基于父ViewModel上的属性在datatemplate中设置样式:
<Style x:Key="curveSpeedNonConstantParameterCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=DataContext.CurveSpeedMustBeSpecified,
ElementName=someParentElementWithReferenceToRootDataContext}"
Value="True">
<Setter Property="Control.Visibility" Value="Hidden"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我收到以下输出错误:
System.Windows.Data Error: 39 : BindingExpression path error:
'CurveSpeedMustBeSpecified' property not found on
'object' ''BindingListCollectionView' (HashCode=20467555)'.
BindingExpression:Path=DataContext.CurveSpeedMustBeSpecified;
DataItem='Grid' (Name='nonConstantCurveParametersGrid');
target element is 'TextBox' (Name='');
target property is 'NoTarget' (type 'Object')
Run Code Online (Sandbox Code Playgroud)
因此,如果我将绑定表达式更改为"Path=DataContext.CurrentItem.CurveSpeedMustBeSpecified"
它可以工作,但只要父用户控件的datacontext是a BindingListCollectionView
.这是不可接受的,因为用户控件的其余部分会自动绑定到CurrentItem
on的属性BindingList
.
如何在样式中指定绑定表达式,以便无论父数据上下文是集合视图还是单个项目,它都可以工作?
我怎么能够:
这是代码:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
感谢Kjetil,GridViewColumn.CellTemplate运行良好,自动宽度当然有效但是当使用长于列宽的数据更新ObservativeCollection"Collection"时,列大小不会自行更新,因此这只是一个解决方案.初始显示数据:
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud) 我有可编辑的组合框,其中并不总是首选项位于下拉列表中.
我希望有可能在文本框中手动输入文本,该文本传播到绑定到SelectedValue的字符串.
现在,只有在ComboBox项目中输入的值为on时,才会更新绑定到SelectedValue的字符串.
如何允许手动输入ComboBox列表中不可用的自定义值并将其正确传播到绑定值?
您建议在WPF窗口(桌面)应用程序中保留用户设置的方法是什么?请注意,该想法是用户可以在运行时更改其设置,然后可以关闭应用程序,然后在稍后启动应用程序时,应用程序将使用当前设置.有效地,它看起来好像应用程序设置不会改变.
Q1 - 数据库还是其他方法?我确实有一个我将使用的sqlite数据库,因此使用数据库中的表将与任何方法一样好吗?
Q2 - 如果数据库:什么数据库表设计?与一个可能有不同的数据类型的列一个表(例如string
,long
,DateTime
等),或者只是一个用于在您拥有序列化和反序列化值,该值的字符串表?我想第一个会更容易,如果设置不多,开销就不多了?
Q3 - 可以使用应用程序设置吗?如果是这样,是否需要在此处启用持久性的特殊任务?在这种情况下,在应用程序设置设计器中使用"默认"值会发生什么?默认会覆盖运行应用程序之间保存的所有设置吗?(或者你需要不使用默认值)
wpf ×8
.net ×4
xaml ×4
c# ×3
datatemplate ×2
combobox ×1
command ×1
data-binding ×1
editing ×1
gridview ×1
listview ×1
mvvm ×1
settings ×1
silverlight ×1
themes ×1