Questions tagged «wpf»

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

3
在WPF中“捕获鼠标”是什么意思?
上System.Windows.UIElement有CaptureMouse()和配对的ReleaseMouseCapture()方法。在此WPF DragDrop示例中,他们在MouseDown上调用CaptureMouse并在MouseUp上释放它。MSDN中的文档几乎毫无用处-“ CaptureMouse->捕获鼠标”。 在尝试之前,我曾以为它以某种方式将鼠标锁定在UIElement边界内,但我尝试时显然不是这种情况。从实验来看,当鼠标位于UIElement之外时,似乎与响应事件有关,但又不想成为一个狂热的程序员,我不想只使用它,因为示例确实如此,我想有关其含义的权威描述。
74 wpf  events  mouse 

11
WPF全局字体大小
我正在创建WPF应用,我想知道能够更改ui中每个元素的字体大小的最佳方法。我是否创建资源字典并设置样式以设置我使用的所有控件的字体大小? 最佳做法是什么?
73 wpf  fonts 

6
从后台代码调用命令
因此,我一直在搜索,无法确切地知道如何执行此操作。我正在使用MVVM创建用户控件,并希望在“已加载”事件上运行命令。我意识到这需要一些代码,但是我不太清楚需要什么。该命令位于ViewModel中,该视图被设置为视图的数据上下文,但是我不确定确切如何路由它,因此可以从已加载事件背后的代码中调用它。基本上我想要的是这样的东西... private void UserControl_Loaded(object sender, RoutedEventArgs e) { //Call command from viewmodel } 环顾四周,我似乎在任何地方都找不到此语法。我是否需要先在xaml中绑定该命令才能引用它?我注意到用户控件中的命令绑定选项将不允许您像在按钮之类的内容中那样绑定命令... <UserControl.CommandBindings> <CommandBinding Command="{Binding MyCommand}" /> <!-- Throws compile error --> </UserControl.CommandBindings> 我敢肯定有一个简单的方法可以做到这一点,但是我无法终生解决。
73 c#  wpf  xaml  data-binding  command 

4
WPF分派器的InvokeAsync和BeginInvoke有什么区别
我在.NET 4.5中注意到,WPF Dispatcher获得了一套新的方法来在Dispatcher的线程上执行称为InvokeAsync的东西。在.NET 4.5之前,我们有Invoke和BeginInvoke分别分别同步和异步处理此事件。 除了命名和可用的稍微不同的重载之外,BeginInvoke和InvokeAsync方法之间是否还有重大区别? 哦,我已经检查过,都可以await编辑: private async Task RunStuffOnUiThread(Action action) { // both of these works fine await dispatcher.BeginInvoke(action); await dispatcher.InvokeAsync(action); }
73 c#  wpf  .net-4.5  async-await 

5
可以在XAML(.NET 4之前的版本)中指定通用类型吗?
在XAML中,我可以声明一个DataTemplate以便在显示特定类型时使用该模板。例如,此DataTemplate将使用TextBlock显示客户名称: <DataTemplate DataType="{x:Type my:Customer}"> <TextBlock Text="{Binding Name}" /> </DataTemplate> 我想知道是否可以定义将在每次显示IList <Customer>时使用的DataTemplate。因此,例如,如果ContentControl的Content是ObservableCollection <Customer>,它将使用该模板。 是否可以使用{x:Type}标记扩展在XAML中声明类似IList的泛型类型?
73 c#  wpf  xaml  generics 

4
如何将TabControl绑定到ViewModels的集合?
基本上我在MainViewModel.cs中: ObservableCollection<TabItem> MyTabs { get; private set; } 但是,我需要以某种方式不仅可以创建选项卡,还可以在维护MVVM的同时将选项卡的内容加载并链接到其相应的视图模型。 基本上,我如何才能将用户控件作为Tabitem的内容加载,并将该用户控件连接到适当的视图模型。造成这一困难的部分是ViewModel不应构造实际的视图项,对吗?可以吗 基本上,这是否适合MVVM: UserControl address = new AddressControl(); NotificationObject vm = new AddressViewModel(); address.DataContext = vm; MyTabs[0] = new TabItem() { Content = address; } 我只问是因为好了,我是从ViewModel构造一个View(AddressControl),对我来说这听起来像是MVVM。
73 c#  wpf  mvvm  tabcontrol  tabitem 

6
通过WPF中的代码隐藏访问资源
我在窗口资源中定义了一个自定义集合,如下所示(在Sketchflow应用中,因此窗口实际上是UserControl): <UserControl.Resources> <ds:MyCollection x:Key="myKey" x:Name="myName" /> </UserControl.Resources> 我希望能够在后面的代码中引用此集合,我希望它可以通过x:Name引用,但是我似乎无法访问它。 我可以使用它获得参考 myRef = (MyCollection) this.FindName("myKey"); 但这似乎有点骇人听闻。这是不好的做法吗?有什么更好的办法?谢谢 :)



1
如何在XAML中为边框设置MouseOver事件/触发器?
我希望当鼠标悬停在边框上时边框变为绿色,然后当鼠标不再位于边框上时边框变为蓝色。 我没有运气就尝试了这个: <Border Name="ClearButtonBorder" Grid.Column="1" CornerRadius="0,3,3,0" Background="Blue"> <Border.Triggers> <Trigger Property="Border.IsMouseOver" Value="True"> <Setter Property="Border.Background" Value="Green" /> </Trigger> <Trigger Property="Border.IsMouseOver" Value="False"> <Setter Property="Border.Background" Value="Blue" /> </Trigger> </Border.Triggers> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="X" /> </Border> 如何设置MouseOver的触发器或事件?
72 wpf  xaml  triggers 


3
WPF C#路径:如何从具有路径数据的字符串获取代码中的几何(不在XAML中)
我想在代码中生成WPF Path对象。 在XAML中,我可以这样做: <Path Data="M 100,200 C 100,25 400,350 400,175 H 280"> 如何在Code中做同样的事情? Path path = new Path(); Path.Data = "foo"; //This won't accept a string as path data. 是否有可用的类/方法将带PathData的字符串转换为PathGeometry或类似的字符串? 当然可以以某种方式解析XAML并转换数据字符串吗?
72 c#  wpf  path 

6
刷新WPF命令
有谁知道我可以如何强制CanExecute使用自定义命令(乔什·史密斯的RelayCommand)? 通常,CanExecute只要在UI上发生交互,就会调用。如果单击某些内容,则命令将更新。 我遇到的情况CanExecute是幕后的计时器会打开/关闭条件。因为这不是由用户交互驱动的,CanExecute所以直到用户与UI交互才被调用。最终结果是我Button保持启用/禁用状态,直到用户单击它为止。单击后,它会正确更新。有时Button显示为已启用,但是当用户单击时,它变为禁用而不是触发。 当计时器更改影响的属性时,如何强制代码更新CanExecute?我尝试在影响的属性上触发PropertyChanged(INotifyPropertyChanged)CanExecute,但这并没有帮助。 XAML示例: <Button Content="Button" Command="{Binding Cmd}"/> 后面的示例代码: private ICommand m_cmd; public ICommand Cmd { if (m_cmd == null) m_cmd = new RelayCommand( (param) => Process(), (param) => EnableButton); return m_cmd; } // Gets updated from a timer (not direct user interaction) public bool EnableButton { get; set; …
72 wpf  mvvm  updating 

4
Moq +单元测试-System.Reflection.TargetParameterCountException:参数计数不匹配
我试图使用带有多参数函数的lambda,但是当我尝试调用该行时,Moq在运行时抛出此异常mock.Object.Convert(value, null, null, null);。 System.Reflection.TargetParameterCountException:参数计数不匹配 代码是: var mock = new Mock<IValueConverter>(); mock.Setup(conv => conv.Convert(It.IsAny<Object>(), It.IsAny<Type>(), It.IsAny<Object>(), It.IsAny<CultureInfo>())).Returns((Int32 num) => num + 5); var value = 5; var expected = 10; var actual = mock.Object.Convert(value, null, null, null); 实施它的正确方法是什么?

7
如何检测损坏的WPF数据绑定?
在尝试回答附近的“ Unit Testing WPF Bindings ” (单元测试WPF绑定)附近的问题时,我遇到了以下问题。. 找出WPF Data Binding接线设置不正确(或者断开了正确接线的东西)的最佳方法是什么? ? 尽管单元测试的方法似乎就像乔尔(Joel)的“撕下手臂以去除碎片”。 每个人似乎都致力于使用WPF进行数据绑定,这确实有其优点。
72 wpf  data-binding 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.