gpt4 book ai didi

c# - 继承 WPF 按钮并在其中添加额外的文本 block

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:57 25 4
gpt4 key购买 nike

我正在制作一个带有按钮的程序,该按钮具有 2 个文本 block :左侧 1 个包含用户名,右侧一个包含“开始”并且为每个注册用户添加这些按钮。

我在此解决方案中有两个项目:一个 (VB.NET) 作为主程序,另一个 (C#) 作为 CustomControlLibrary...

现在,我想在自定义控件库中创建这个自定义按钮...我正在尝试创建一个新的自定义控件并将“: Control”更改为“:Button”

Generic.xaml

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LC_Lib.LC_Controls">


<Style TargetType="{x:Type local:UserSelectButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:UserSelectButton}">
<Border Background="{TemplateBinding Background}"
BorderBrush="Black"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Name="txtb_user"></TextBlock>
</Grid>
</Border>

</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace LC_Lib.LC_Controls
{
public class UserSelectButton : Button
{
private string u_name = "";
static UserSelectButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(UserSelectButton), new FrameworkPropertyMetadata(typeof(UserSelectButton)));
}
public string UserName
{
get { return u_name; }
set { u_name = value; }
}
}
}

VB.NET

For Each user In users_list
Dim user_btn As New UserSelectButton

user_btn.UserName = user.Name
Dim top As Double = users_list.IndexOf(user) * 40 + 20
user_btn.Margin = New Thickness(20, top, 0, 75)
user_btn.Tag = users_list.IndexOf(user)
AddHandler user_btn.Click, Sub(s, a)
SignIn()
End Sub
Next

  • 我应该怎么做才能让它们出现在我的表单中?我似乎看不到它们,但是当我单击它们时,它实际上会触发...
  • 我可以通过在 Generic.xaml 的边框中插入文本 block 元素来在网格中“添加”两个文本 block 吗?
  • 如果是这样,或者相反,我如何在继承按钮的 UserName 属性中分配文本 block 的文本?

最佳答案

If so, or the other way, how can I assign the textblock's text in the UserName property of the inherited button?

您可以在 UserSelectButton 中创建 DependencyProperty 并使用 RelativeSource={RelativeSource TemplatedParent 在 XAML 样式中对其执行 Binding }Mode=TwoWay。然后您可以将任何内容绑定(bind)到该依赖项属性。

关于c# - 继承 WPF 按钮并在其中添加额外的文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com