小编Dav*_*mer的帖子

如何分隔StackPanel的子元素?

给定StackPanel:

<StackPanel>
  <TextBox Height="30">Apple</TextBox>
  <TextBox Height="80">Banana</TextBox>
  <TextBox Height="120">Cherry</TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

即使子元素本身具有不同的大小,将子元素间隔开来以使它们之间存在大小相等的间隙的最佳方法是什么?可以在没有为每个孩子设置属性的情况下完成吗?

silverlight wpf xaml stackpanel

175
推荐指数
5
解决办法
14万
查看次数

167
推荐指数
3
解决办法
12万
查看次数

WPF:具有列/行边距/填充的网格?

是否可以轻松地为WPF网格中的行或列指定边距和/或填充?

我当然可以添加额外的列来解决问题,但这似乎是填充/边距的工作(它将提供简单的XAML).有人从标准网格派生出来添加此功能吗?

wpf grid margin padding

125
推荐指数
6
解决办法
15万
查看次数

WPF - 如何强制命令通过其CommandBindings重新评估'CanExecute'

我有一个层次结构Menu中的每个MenuItem都将其Command属性设置为RoutedCommand我已定义的属性.关联CommandBinding提供了一个回调,用于评估CanExecute控制每个的启用状态MenuItem.

几乎可行.菜单项最初会显示正确的启用和禁用状态.但是,当我的CanExecute回调使用的数据发生变化时,我需要命令从我的回调中重新请求结果,以便在UI中反映这种新状态.

似乎没有任何公共方法RoutedCommandCommandBinding为此.

请注意,当我单击或键入控件时再次使用回调(我猜它是在输入时触发的,因为鼠标悬停不会导致刷新).

.net wpf command commandbinding

125
推荐指数
4
解决办法
8万
查看次数

处置WPF用户控件

我创建了一个自定义WPF用户控件,供第三方使用.我的控件有一个一次性的私有成员,我想确保一旦包含窗口/应用程序关闭,它的dispose方法将始终被调用.但是,UserControl不是一次性的.我尝试实现IDisposable接口并订阅Unloaded事件,但在主机应用程序关闭时都不会被调用.如果可能的话,我不想依赖我控制的消费者记住调用特定的Dispose方法.

 public partial class MyWpfControl : UserControl
 {
     SomeDisposableObject x;

     // where does this code go?
     void Somewhere() 
     {
         if (x != null)
         {
             x.Dispose();
             x = null;
         }

     }
 }
Run Code Online (Sandbox Code Playgroud)

到目前为止,我找到的唯一解决方案是订阅Dispatcher的ShutdownStarted事件.这是一种合理的方法吗?

this.Dispatcher.ShutdownStarted += Dispatcher_ShutdownStarted;
Run Code Online (Sandbox Code Playgroud)

.net c# wpf user-controls dispose

114
推荐指数
5
解决办法
9万
查看次数

如何以编程方式在C#中生成按键事件?

如何以编程方式创建一个模拟键盘上按键的事件?

.net c# wpf keyboard-events

104
推荐指数
5
解决办法
14万
查看次数

如何使WPF组合框具有XAML中最宽元素的宽度?

我知道如何在代码中执行此操作,但这可以在XAML中完成吗?

Window1.xaml:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ComboBox Name="ComboBox1" HorizontalAlignment="Left" VerticalAlignment="Top">
            <ComboBoxItem>ComboBoxItem1</ComboBoxItem>
            <ComboBoxItem>ComboBoxItem2</ComboBoxItem>
        </ComboBox>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

Window1.xaml.cs:

using System.Windows;
using System.Windows.Controls;

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            double width = 0;
            foreach (ComboBoxItem item in ComboBox1.Items)
            {
                item.Measure(new Size(
                    double.PositiveInfinity, double.PositiveInfinity));
                if (item.DesiredSize.Width > width)
                    width = item.DesiredSize.Width;
            }
            ComboBox1.Measure(new Size(
                double.PositiveInfinity, double.PositiveInfinity));
            ComboBox1.Width = ComboBox1.DesiredSize.Width + width;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# wpf combobox

98
推荐指数
4
解决办法
5万
查看次数

如何在XAML中放置一个unicode角色?

我正在尝试这样做:

<TextBlock Text="{Binding Path=Text, 
                          Converter={StaticResource stringFormatConverter}, 
                          ConverterParameter='&\u2014{0}'}" />
Run Code Online (Sandbox Code Playgroud)

获得 - 出现在文本前面.它不起作用.我该怎么办?

unicode wpf xaml binding

98
推荐指数
3
解决办法
6万
查看次数

将焦点设置在WPF中的文本框中

如何将焦点设置TextBox在WPF中的元素上

我有这个代码:

txtCompanyID.Focusable = true;
txtCompanyID.Focus();
Run Code Online (Sandbox Code Playgroud)

......但它不起作用.

任何的想法?

.net c# wpf textbox focus

97
推荐指数
7
解决办法
13万
查看次数

将焦点设置在xaml wpf中的文本框中

尽管在这个论坛和其他人的一些帖子,我找不到一些东西,告诉我如何把重点放在一个TextBox.

我有一个带有许多标签和textBoxes的userControl.加载表单时,我希望特定的textBox具有焦点.

我已经设置了tabIndex,但似乎没有用.

有什么建议?

wpf textbox focus

90
推荐指数
3
解决办法
8万
查看次数