C# WPF主题讨论区

Dotnet9 分类:桌面软件开发

有关C# WPF的问题都可以在这里给站长留言,站长定会及时回复

回复

共15条回复 我来回复
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    Github下载失败的朋友,我将该demo下载到了本站,地址:https://dotnet9.com/demoapp,最新版本3.0.1,里面有.net framework 4.72和.net core 3.0两个版:

    202001161734082020011617344220200116173511

    1年前 0条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    今天在博客园看到一个WPF系列文章,有需要的同学可以点击跳转查看:https://www.cnblogs.com/Peter-Luo/category/1620030.html

    1年前 0条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    站长您好,我是刚刚给您发消息问您TextBox的输入限制问题的码农01号,您说可以使用正则表达式,但是这个也是逐一添加在后台代码或者是xaml上吧?也就是跟TextBox一一对应的,我想有个能统一处理所有TextBox的办法。

    例如:重写TextBox,但是网上很少资料,我看的也是云里雾里的。您有其他方案解决这个问题吗?

    1年前 0条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    1、看看这篇文章呢:https://www.cnblogs.com/dhqy/p/8677227.html

    步骤二:监测 TextBox 的 PreviewTextInput事件
            private void TextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
    {
    Regex re = new Regex("[^A-F0-9]");  // 只允许输入大写字母A~F和数字0~9

    e.Handled = re.IsMatch(e.Text);
    }

      注:e.Text为当前输入的单个字符,当该字符与正则表达式 re 匹配时 e.Handled = true,TextBox的TextInput事件被中断(输入终止)。
    遍历所有的TextBox,添加PreviewTextInput事件
    1年前 1条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    所以我在寻找更好的解决方案。想重写一个TextBox控件,然后自带限制输入效果,后面添加的时候也方便。但是技术知识不够,找不到相关资料,或者找到了也是云里雾里的···

    1年前 0条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    1、MyTextBox.cs

    继承TextBox:

    using System.Text.RegularExpressions;
    using System.Windows.Controls;
    using System.Windows.Input;

    namespace MVVMTest
    {
    public class MyTextBox:TextBox
    {
    protected override void OnPreviewTextInput(TextCompositionEventArgs e)
    {
    Regex re = new Regex("[^A-F0-9]"); // 只允许输入大写字母A~F和数字0~9
    e.Handled = re.IsMatch(e.Text);
    }
    }
    }

     

    使用的地方:

    2、引入自定义的TextBox命名空间:xmlns:local="clr-namespace:MVVMTest"
    3、插入使用TextBox的地方:<local:MyTextBox/>

    1年前 0条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    可以了··感谢大佬,但就像名言当你解决这个Bug的时候,你就在写下一个Bug一样,我有使用MaterialDesign 的样式库,我在app.xaml里面是有引用资源的,但是这个重写的TextBox没有自动应用样式,如果我把原来的输入框大规模的进行替换,那工作量是不小的,有什么办法可以让它自动使用MaterialDesign 样式库的样式吗?

    1年前 1条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    MyTextBox2.xaml:

    <TextBox x:Class="MVVMTest.MyTextBox2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:MVVMTest"
    mc:Ignorable="d"
    d:DesignHeight="450" d:DesignWidth="800">
    <Grid>

    </Grid>
    </TextBox>

     

    MyTextBox2.xaml.cs:

    using System.Text.RegularExpressions;
    using System.Windows.Controls;
    using System.Windows.Input;

    namespace MVVMTest
    {
    /// <summary>
    /// MyTextBox2.xaml 的交互逻辑
    /// </summary>
    public partial class MyTextBox2 : TextBox
    {
    public MyTextBox2()
    {
    InitializeComponent();
    }
    protected override void OnPreviewTextInput(TextCompositionEventArgs e)
    {
    Regex re = new Regex("[^A-F0-9]"); // 只允许输入大写字母A~F和数字0~9
    e.Handled = re.IsMatch(e.Text);
    }
    }
    }

    1年前 0条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    太好了!可以了,感谢您,晚点给您赞助,感谢大佬!

    1年前 1条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    站长,WPF自定义TextBox怎么让他保留2位小数呢?

    我知道有个绑定数据源 StringFormat='n2'但是在定义控件里面还没指定数据源的时候要怎么实现显示保留2位小数呢

    1年前 0条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    参考这篇文章呢:https://blog.csdn.net/zshuaihua/article/details/33342543?utm_source=blogkpcl3

    //以下代码仅为示例,非全部代码,详细请查看下载地址提供的源码
    private void tbInput_Validating(object sender, CancelEventArgs e)
    {
    string errorMsg;

    if (!IsNumberic(tbInput.Text.Trim(), out errorMsg))
    {
    e.Cancel = true;
    tbInput.Select(0, tbInput.Text.Length);
    this.errorProvider1.SetError(tbInput, errorMsg);
    //Console.WriteLine("输入非法!!");
    }
    }

    #region 输入是否合法
    public bool IsNumberic(string message, out string errorMsg)
    {
    //示例(非全部代码)
    string temp = @"(^(\d(\.\d{2})?){1}$)";
    Regex rex = new Regex(temp);

    if (rex.IsMatch(message))
    {
    //...
    }
    else
    {
    //...
    }
    }
    #endregion

    public static bool IsSDC(string strSDC)
    {
    //...
    }

    public static string ToDBC(string strSBC)
    {
    //...
    }

    private void tbInput_Validated(object sender, EventArgs e)
    {
    //如果所有条件都满足的话,清除ErrorProvider中的错误信息。
    errorProvider1.SetError(tbInput, "");
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    //这里是为了确保关闭窗口功能不受影响
    e.Cancel = false;
    }

    1年前 0条评论
  • 码农01号
    码农01号
    这个人很懒,什么都没有留下~
    评论

    站长,我又来啦,我现在有个需求,需要一个类似于导航条的控件,C# WPF主题讨论区

    像这种,我可以控制里面的内容以及到哪个点,MD好像没有这种样式的控件,大佬有推荐吗?

    1年前 8条评论
  • Dotnet9
    Dotnet9
    89年的Dotnet程序员,热衷于互联网分享精神。
    评论

    Panuon.UI.Silver:https://dotnet9.com/2285.html

    用的TabControl,参考效果如下,你的这种设计你要修改下样式:

    2020032308523980

    <TabControl pu:TabControlHelper.ItemHeight="35"
    pu:TabControlHelper.ItemBackground="#3E3E3E"
    pu:TabControlHelper.SelectedBackground="#888888"
    pu:TabControlHelper.SelectedForeground="White"
    pu:TabControlHelper.TabControlStyle="Card">
    <pu:TabControlHelper.ExtendControl>
    <Button Content=""
    FontFamily="{DynamicResource FontAwesome}"
    Width="35"/>
    </pu:TabControlHelper.ExtendControl>
    <TabItem Header="Level 1"
    Foreground="White"
    Width="100"/>
    <TabItem Header="Level 2"
    Foreground="White"
    Width="100" />
    <TabItem Header="Level 3"
    Foreground="White"
    Width="100" />
    </TabControl>

    具体怎么使用,添加本站技术交流群,或者Panuon.UI.Silver技术交流群

    1年前 1条评论
  • 隐身守候
    隐身守候
    这个人很懒,什么都没有留下~
    评论

    站长你好,我在DataGrid表格绑定了下拉框ComboBox,下拉框我想绑定传过来的数据,之前下拉框都是直接绑定它的DisplayMemberPath和SelectedValuePath,但现在直接获取不了ComboBox的Name,我数据是DataTable,这要怎么绑定呢

    999

    666

    7个月前 0条评论