标签: wpf

如何让TextBox只接受WPF中的数字输入?

我想接受数字和小数点,但没有迹象.

我已经使用Windows窗体的NumericUpDown控件和Microsoft的NumericUpDown自定义控件示例查看了示例.但到目前为止,似乎NumericUpDown(WPF支持或不支持)不会提供我想要的功能.我的应用程序的设计方式,没有人在他们正确的头脑中想要弄乱箭头.在我的申请中,它们没有任何实际意义.

所以我正在寻找一种简单的方法来使标准的WPF TextBox只接受我想要的字符.这可能吗?这是实用的吗?

c# wpf xaml textbox numericupdown

317
推荐指数
17
解决办法
40万
查看次数

在代码中设置WPF图像源

我正在尝试在代码中设置WPF图像的源代码.图像作为资源嵌入到项目中.通过查看示例,我提出了以下代码.由于某种原因,它不起作用 - 图像不显示.

通过调试,我可以看到流包含图像数据.那有什么不对?

Assembly asm = Assembly.GetExecutingAssembly();
Stream iconStream = asm.GetManifestResourceStream("SomeImage.png");
PngBitmapDecoder iconDecoder = new PngBitmapDecoder(iconStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
ImageSource iconSource = iconDecoder.Frames[0];
_icon.Source = iconSource;
Run Code Online (Sandbox Code Playgroud)

图标的定义如下: <Image x:Name="_icon" Width="16" Height="16" />

.net c# wpf image

316
推荐指数
12
解决办法
52万
查看次数

调用线程无法访问此对象,因为另一个线程拥有它

我的代码如下

public CountryStandards()
{
    InitializeComponent();
    try
    {
        FillPageControls();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Country Standards", MessageBoxButton.OK, MessageBoxImage.Error);
    }
}

/// <summary>
/// Fills the page controls.
/// </summary>
private void FillPageControls()
{
    popUpProgressBar.IsOpen = true;
    lblProgress.Content = "Loading. Please wait...";
    progress.IsIndeterminate = true;
    worker = new BackgroundWorker();
    worker.DoWork += new System.ComponentModel.DoWorkEventHandler(worker_DoWork);
    worker.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(worker_ProgressChanged);
    worker.WorkerReportsProgress = true;
    worker.WorkerSupportsCancellation = true;
    worker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
    worker.RunWorkerAsync();                    
}

private void worker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
    GetGridData(null, 0); // filling grid …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading backgroundworker

310
推荐指数
10
解决办法
24万
查看次数

如何在WPF中获取控件以填充可用空间?

Button如果你没有指定它的高度,一些WPF控件(比如)似乎很乐意消耗它'容器中的所有可用空间.

还有一些,比如我现在需要使用的那些,(多线)TextBox而且ListBox似乎更担心只需占用适合其内容所需的空间,而不是更多.

如果你将这些人放在一个单元格中UniformGrid,它们将扩展以适应可用空间.但是,UniformGrid实例并不适合所有情况.如果你有一个网格,其中一些行设置为*高度,以划分自身与其他*行之间的高度,该怎么办?如果你有一个StackPanel,你有a Label,a List和a Button,你怎么能得到列表占据标签和按钮没有吃掉的所有空间怎么办?

我认为这确实是一个基本的布局要求,但我无法弄清楚如何让它们填充他们可以填充的空间(将它们放入并将其DockPanel设置为填充也不起作用,似乎,因为在DockPanel只占用其子控件所需的空间).

一个可调整大小的GUI将是相当可怕的,如果你有一起玩Height,Width,MinHeight,MinWidth等.

你可以绑定你HeightWidth属性,以你占据网格单元?或者还有另一种方法吗?

wpf layout user-interface

292
推荐指数
4
解决办法
25万
查看次数

Visibility.Collapsed和Visibility.Hidden之间的区别

WPF Visibility.CollapsedVisibility.HiddenWPF 之间有什么区别?

wpf visibility wpf-controls

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

打开目录对话框

我希望用户选择一个目录,然后保存我将生成的文件.我知道在WPF中我应该使用OpenFileDialog来自Win32,但不幸的是,对话框需要选择文件 - 如果我只是单击"确定"而不选择一个文件,它将保持打开状态.我可以通过让用户选择一个文件然后去除路径以找出它所属的目录来"破解"该功能,但这最多是不直观的.以前有人见过这个吗?

filesystems wpf dialog

260
推荐指数
9
解决办法
30万
查看次数

如何按名称或类型查找WPF控件?

我需要在WPF控件层次结构中搜索与给定名称或类型匹配的控件.我怎样才能做到这一点?

wpf controls find

258
推荐指数
13
解决办法
31万
查看次数

将枚举属性数据绑定到WPF中的ComboBox

作为示例,请使用以下代码:

public enum ExampleEnum { FooBar, BarFoo }

public class ExampleClass : INotifyPropertyChanged
{
    private ExampleEnum example;

    public ExampleEnum ExampleProperty 
    { get { return example; } { /* set and notify */; } }
}
Run Code Online (Sandbox Code Playgroud)

我想要将属性ExampleProperty数据绑定到ComboBox,以便它显示选项"FooBar"和"BarFoo"并在TwoWay模式下工作.最理想的是我希望我的ComboBox定义看起来像这样:

<ComboBox ItemsSource="What goes here?" SelectedItem="{Binding Path=ExampleProperty}" />
Run Code Online (Sandbox Code Playgroud)

目前我在我的Window中安装了ComboBox.SelectionChanged和ExampleClass.PropertyChanged事件的处理程序,我手动执行绑定.

是否有更好或某种规范的方式?您通常会使用转换器吗?如何使用正确的值填充ComboBox?我现在甚至不想开始使用i18n.

编辑

所以回答了一个问题:如何使用正确的值填充ComboBox.

通过静态Enum.GetValues方法中的ObjectDataProvider将Enum值作为字符串列表检索:

<Window.Resources>
    <ObjectDataProvider MethodName="GetValues"
        ObjectType="{x:Type sys:Enum}"
        x:Key="ExampleEnumValues">
        <ObjectDataProvider.MethodParameters>
            <x:Type TypeName="ExampleEnum" />
        </ObjectDataProvider.MethodParameters>
    </ObjectDataProvider>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

这个我可以用作我的ComboBox的ItemsSource:

<ComboBox ItemsSource="{Binding Source={StaticResource ExampleEnumValues}}"/>
Run Code Online (Sandbox Code Playgroud)

.net wpf

246
推荐指数
9
解决办法
17万
查看次数

水印/提示文本/占位符TextBox

如何将一些文本放入文本框中,当用户在其中键入内容时会自动将其删除?(在WPF中)

c# wpf textbox watermark hint

246
推荐指数
12
解决办法
21万
查看次数

MVVM:从头到尾的教程?

我是一名C#/ Windows Forms程序员,拥有超过5年的经验.我一直在使用MVVM(Model-View-ViewModel)设计模式研究WPF.我在互联网上搜索了教程.我甚至看过杰森·多林格的全部精彩视频.虽然我找到了很多,但我没有找到一个从头到尾带我的人.我真正想要的是一个不承担任何以前的WPF知识的教程.

您最喜欢哪些WPF-MVVM教程可以帮助您学习?

.net c# wpf mvvm

243
推荐指数
14
解决办法
39万
查看次数