小编akj*_*shi的帖子

按类型查找WPF窗口中的所有控件

我正在寻找一种方法来查找Window类型的所有控件,

例如:查找全部TextBoxes,找到实现特定接口的所有控件等.

.net c# wpf

213
推荐指数
6
解决办法
18万
查看次数

194
推荐指数
5
解决办法
7万
查看次数

将枚举值作为命令参数从XAML传递

我想在WPF中将枚举值作为命令参数传递,使用如下所示:

<Button 
    x:Name="uxSearchButton" 
    Command="{Binding Path=SearchMembersCommand}" 
    CommandParameter="SearchPageType.First"
    Content="Search">
</Button>
Run Code Online (Sandbox Code Playgroud)

SearchPageType 是一个枚举,这是要知道从哪个按钮搜索命令被调用.

这在WPF中是否可行,或者如何将枚举值作为命令参数传递?

.net silverlight wpf xaml command

179
推荐指数
4
解决办法
6万
查看次数

在MVVM中,ViewModel或Model应该实现INotifyPropertyChanged吗?

我经历过的大多数MVVM示例都使用了Model实现INotifyPropertyChanged,但在Josh Smith的CommandSink示例中 ,ViewModel实现了INotifyPropertyChanged.

我还在认知上把MVVM概念放在一起,所以我不知道是否:

  • 你必须将INotifyPropertyChanged放在ViewModel中以使CommandSink工作
  • 这只是常态的失常,并不重要
  • 你应该总是有Model实现INotifyPropertyChanged,这只是一个错误,如果从代码示例开发到应用程序,这将被纠正

您曾参与MVVM项目的其他经历是什么?

c# mvvm inotifypropertychanged

155
推荐指数
7
解决办法
4万
查看次数

Generic.xaml有什么特别之处?

我一直在试图弄清楚如何组织我的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有什么优势呢?如果我不试图给我的应用程序多个"外观"(即,如果我只有一个主题),它是否有任何目的?

wpf xaml themes

146
推荐指数
2
解决办法
5万
查看次数

构建时,命令副本退出代码4 - Visual Studio重新启动解决了它

我不时在这里构建我的解决方案(其中包含7个项目)我在Visual Studio 2010 Premium ed中得到了可怕的'命令副本退出代码4'错误.

这是因为后期构建事件无法通过.

这是暂时解决问题的方法

  • 有时:重新启动Visual Studio,我就能构建解决方案
  • 有时:重启Visual Studio和我选择的文件管理器(Q-Dir 4.37)都解决了这个问题.

以下是构建后事件的样子:

xcopy "$(SolutionDir)Solution Items\References\*.dll" "$(TargetDir)" /Y
Run Code Online (Sandbox Code Playgroud)

当您使用代码[插入值]错误退出命令副本时,通常会出现以下情况:

  • 读/写权限
  • 遗失的文件
  • 错误的目录

然而 - 显然有时我构建解决方案时,没有问题.

仅供参考,两周前我卸载了ReSharper 5.1.1,Visual Studio从那时起就给了我一些错误(其中无法调试).我重新安装了Visual Studio,从那以后它运行得更好,但仍然遇到了这个问题.它可能与某些ReSharper的某些东西有关吗?

你有同样的问题并解决了吗?或者你有任何可能的解决方案吗?

干杯.

visual-studio

146
推荐指数
7
解决办法
15万
查看次数

从DataTemplate访问父DataContext

我有一个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.这是不可接受的,因为用户控件的其余部分会自动绑定到CurrentItemon的属性BindingList.

如何在样式中指定绑定表达式,以便无论父数据上下文是集合视图还是单个项目,它都可以工作?

data-binding wpf xaml relativesource datatemplate

101
推荐指数
4
解决办法
11万
查看次数

如何在WPF中自动调整和右对齐GridViewColumn数据?

我怎么能够:

  • 右对齐ID列中的文本
  • 根据具有最长可见数据的单元格的文本长度使每个列自动调整大小?

这是代码:

<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)

wpf xaml listview gridview gridviewcolumn

82
推荐指数
6
解决办法
14万
查看次数

具有绑定到值的可编辑ComboBox不在列表中

我有可编辑的组合框,其中并不总是首选项位于下拉列表中.

我希望有可能在文本框中手动输入文本,该文本传播到绑定到SelectedValue的字符串.

现在,只有在ComboBox项目中输入的值为on时,才会更新绑定到SelectedValue的字符串.

如何允许手动输入ComboBox列表中不可用的自定义值并将其正确传播到绑定值?

.net wpf combobox editing

80
推荐指数
2
解决办法
4万
查看次数

c# - 在WPF应用程序中保存用户设置的方法?

您建议在WPF窗口(桌面)应用程序中保留用户设置的方法是什么?请注意,该想法是用户可以在运行时更改其设置,然后可以关闭应用程序,然后在稍后启动应用程序时,应用程序将使用当前设置.有效地,它看起来好像应用程序设置不会改变.

Q1 - 数据库还是其他方法?我确实有一个我将使用的sqlite数据库,因此使用数据库中的表将与任何方法一样好吗?

Q2 - 如果数据库:什么数据库表设计?与一个可能有不同的数据类型的列一个表(例如string,long,DateTime等),或者只是一个用于在您拥有序列化和反序列化值,该值的字符串表?我想第一个会更容易,如果设置不多,开销就不多了?

Q3 - 可以使用应用程序设置吗?如果是这样,是否需要在此处启用持久性的特殊任务?在这种情况下,在应用程序设置设计器中使用"默认"值会发生什么?默认会覆盖运行应用程序之间保存的所有设置吗?(或者你需要不使用默认值)

.net c# wpf settings

69
推荐指数
5
解决办法
12万
查看次数