我想接受数字和小数点,但没有迹象.
我已经使用Windows窗体的NumericUpDown控件和Microsoft的NumericUpDown自定义控件示例查看了示例.但到目前为止,似乎NumericUpDown(WPF支持或不支持)不会提供我想要的功能.我的应用程序的设计方式,没有人在他们正确的头脑中想要弄乱箭头.在我的申请中,它们没有任何实际意义.
所以我正在寻找一种简单的方法来使标准的WPF TextBox只接受我想要的字符.这可能吗?这是实用的吗?
我正在尝试在代码中设置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" />
我的代码如下
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) Button如果你没有指定它的高度,一些WPF控件(比如)似乎很乐意消耗它'容器中的所有可用空间.
还有一些,比如我现在需要使用的那些,(多线)TextBox而且ListBox似乎更担心只需占用适合其内容所需的空间,而不是更多.
如果你将这些人放在一个单元格中UniformGrid,它们将扩展以适应可用空间.但是,UniformGrid实例并不适合所有情况.如果你有一个网格,其中一些行设置为*高度,以划分自身与其他*行之间的高度,该怎么办?如果你有一个StackPanel,你有a Label,a List和a Button,你怎么能得到列表占据标签和按钮没有吃掉的所有空间怎么办?
我认为这确实是一个基本的布局要求,但我无法弄清楚如何让它们填充他们可以填充的空间(将它们放入并将其DockPanel设置为填充也不起作用,似乎,因为在DockPanel只占用其子控件所需的空间).
一个可调整大小的GUI将是相当可怕的,如果你有一起玩Height,Width,MinHeight,MinWidth等.
你可以绑定你Height和Width属性,以你占据网格单元?或者还有另一种方法吗?
WPF Visibility.Collapsed和Visibility.HiddenWPF 之间有什么区别?
我希望用户选择一个目录,然后保存我将生成的文件.我知道在WPF中我应该使用OpenFileDialog来自Win32,但不幸的是,对话框需要选择文件 - 如果我只是单击"确定"而不选择一个文件,它将保持打开状态.我可以通过让用户选择一个文件然后去除路径以找出它所属的目录来"破解"该功能,但这最多是不直观的.以前有人见过这个吗?
作为示例,请使用以下代码:
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) 如何将一些文本放入文本框中,当用户在其中键入内容时会自动将其删除?(在WPF中)
我是一名C#/ Windows Forms程序员,拥有超过5年的经验.我一直在使用MVVM(Model-View-ViewModel)设计模式研究WPF.我在互联网上搜索了教程.我甚至看过杰森·多林格的全部精彩视频.虽然我找到了很多,但我没有找到一个从头到尾带我的人.我真正想要的是一个不承担任何以前的WPF知识的教程.
您最喜欢哪些WPF-MVVM教程可以帮助您学习?