标签: wpf-controls

如何定义TextBox输入限制?

如何限制TextBox仅接受大写字母,例如数字,或禁止放置任何特殊字符?

当然,抓住TextInput事件并在此处理文本是一块蛋糕,但这是否是正确的方法呢?

wpf textbox mask wpf-controls input-filtering

55
推荐指数
3
解决办法
4万
查看次数

WPF中的自动完成TextBox

是否可以在WPF中使文本框自动完成?

我找到了一个示例,其中使用了一个组合框,并通过编辑样式模板删除了三角形.

有更好的解决方案吗?

wpf textbox autocomplete wpf-controls

51
推荐指数
3
解决办法
10万
查看次数

自定义与用户控制

我一直在阅读有关用户和自定义控件之间差异的一些解释,例如:http: //www.wpftutorial.net/CustomVsUserControl.html

例如,我想创建一个带有2个组合框的数据网格的简单组合,这些组合框负责更改数据网格项目的值.我想为此创建一个特定的控件,因为我将使用它很多次.我想实现后面的逻辑然后在xaml调用中我只需要指定itemsSource.

对于此示例,我应该创建用户控件还是自定义控件?由于我将拥有属性和逻辑,我应该有一个用于此控件的viewmodel吗?

编辑:你知道一些文章在这两个选项之间有明确的概念分离吗?

wpf user-controls custom-controls wpf-controls viewmodel

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

如何将上下文菜单添加到wpf datagrid?

只是想知道如何将ContextMenu添加到DataGrid?我希望能够右键单击DataGrid上的任何位置.有人可以提供一个简单的hello world示例(只是弹出消息框或其他东西)?

谢谢!

wpf datagrid wpf-controls

47
推荐指数
1
解决办法
5万
查看次数

WPF ComboBox通过绑定大型集合来解决性能问题

我正在尝试将大型集合绑定到ComboBox,并且在打开ComboBox的弹出窗口时遇到了性能问题.我搜索了互联网,发现使用VirtualizingStackPanel作为项目面板模板可能有所帮助,但它只能帮助部分.如果我将一个大型集合绑定到一个ComboBox,我可以非常快速地打开弹出窗口,这没关系,但如果之后我将另一个集合绑定到一个ComboBox并尝试再次打开弹出窗口,它会变得非常慢.如果您为空ComboBox打开弹出窗口,然后绑定大型集合并尝试再次打开弹出窗口,则会发生同样的情况 - 弹出窗口打开前需要几秒钟.

这是XAML:

<ComboBox Name="cbBlah">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)

和绑定的示例代码重现问题:

var list = new List<string>();
for (var i = 0; i < new Random().Next(9000, 10000); i++)
    list.Add(i.ToString());
cbBlah.ItemsSource = list;
Run Code Online (Sandbox Code Playgroud)

我试图使虚拟化堆栈面板看起来像这样:

<VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" />
Run Code Online (Sandbox Code Playgroud)

但它没有帮助,似乎忽略了VirtualizationMode,因此弹出窗口仅在第一次打开非常快,然后,每次绑定更改后,它都非常慢.

更新:我想过每次都没有绑定新的集合,但是绑定一次ObservableCollection然后只是改变它的内容.同样的事情,一旦收集内容发生变化,打开一个弹出窗口仍然需要几秒钟:(

data-binding wpf combobox wpf-controls

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

WPF资源中的整数值?

是否可以在WPF控件资源中设置整数值?!

<UserControl.Resources>

    <SolidColorBrush x:Key="MyLineBrush" Color="LightGreen" />

    ??? <Integer x:Key="MyStrokeThickness" Value="2" /> ???


    <Style TargetType="local:MyLine" x:Key="MyLineStyleKey">    

        <Setter Property="Stroke" 
            Value="{DynamicResource MyLineBrush}"/>

        <Setter Property="StrokeThickness" 
            Value="{DynamicResource MyStrokeThickness}"/>

    </Style>
Run Code Online (Sandbox Code Playgroud)

为了动态修改MyLineBrushMyStrokeThickness值......

wpf wpf-controls

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

如何将WPF用户控件的宽度拉伸到其窗口?

我有一个用我的用户控件的窗口,我想使usercontrol宽度等于窗口宽度.怎么做?

用户控件是一个水平菜单,包含一个包含三列的网格:

<ColumnDefinition Name="LeftSideMenu" Width="433"/>
<ColumnDefinition Name="Middle" Width="*"/>
<ColumnDefinition Name="RightSideMenu" Width="90"/>
Run Code Online (Sandbox Code Playgroud)

这就是我想要窗口宽度的原因,将用户控件拉伸到100%宽度,第二列是相对的.

编辑:

我正在使用网格,有Window的代码:

<Window x:Class="TCI.Indexer.UI.Operacao"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tci="clr-namespace:TCI.Indexer.UI.Controles"
    Title=" " MinHeight="550" MinWidth="675" Loaded="Load" ResizeMode="NoResize" WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized" Focusable="True"
    x:Name="windowOperacao">
    <Canvas x:Name="canv">
        <Grid>
            <tci:Status x:Name="ucStatus"/> <!-- the control which I want to stretch in width -->
        </Grid>
    </Canvas>
</Window>
Run Code Online (Sandbox Code Playgroud)

.net c# wpf xaml wpf-controls

43
推荐指数
3
解决办法
15万
查看次数

WPF:如何使画布自动调整大小?

我希望我Canvas自动调整大小到其项目的大小,以便ScrollViewer滚动条具有正确的范围.这可以在XAML中完成吗?

<ScrollViewer HorizontalScrollBarVisibility="Auto" x:Name="_scrollViewer">
    <Grid x:Name ="_canvasGrid" Background="Yellow">
        <Canvas x:Name="_canvas" HorizontalAlignment="Left" VerticalAlignment="Top" Background="Green"></Canvas>
        <Line IsHitTestVisible="False" .../>
    </Grid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,画布的大小始终为0,但它不会剪切其子元素.

.net wpf resize scrollviewer wpf-controls

43
推荐指数
5
解决办法
8万
查看次数

如何在WPF中创建/制作圆角按钮?

我需要在WPF中创建一个圆角的光泽按钮.有人可以解释一下我需要采取哪些步骤?

.net wpf styles button wpf-controls

41
推荐指数
7
解决办法
10万
查看次数

如何按类型获取WPF容器的子项?

我怎样才能类型的子控件ComboBoxMyContainer Grid的WPF?

<Grid x:Name="MyContainer">                    
    <Label Content="Name"  Name="label1"  />
    <Label Content="State" Name="label2"  />
    <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox1"/>
    <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox3" />
    <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox4" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

这行给了我一个错误:

var myCombobox = this.MyContainer.Children.GetType(ComboBox);
Run Code Online (Sandbox Code Playgroud)

c# wpf wpf-controls

41
推荐指数
3
解决办法
7万
查看次数