0

intTextBoxクラスにプロパティを追加する追加のWPFコントロールが必要です。[プロジェクト]>[新しいアイテムの追加]>[カスタムコントロール(WPF)]を試しました。これにより、新しいコントロール用の新しいcsファイルが作成されました。この新しいクラスにクラスを継承させてから内部TextBoxに追加しようとしましたが、明らかにそれは正しい構文ではありません。public int number { get; set; }static CustomTextBox()

これTextBoxが必要なのは、XAMLではなくコードで動的に作成するためです。

ジョン・ガードナーの答えを実装する私の試みは次のとおりです。

public static readonly DependencyProperty Number = DependencyProperty.RegisterAttached(
        "number",
        typeof(TextBox),
        typeof(int),
        new PropertyMetadata(false)
        );
    public static void SetNumber(UIElement element, TextBox value)
    {
        element.SetValue(Number, value);
    }
    public static TextBox GetNumber(UIElement element)
    {
        return (TextBox)element.GetValue(Number);
    }

これをMainWindowクラスに追加しました。TextBox私のsに追加のNumberプロパティを与えるようには見えません。

4

2 に答える 2

1

新しいコントロールが必要ですか?代わりに、添付プロパティを使用する方がよい場合があります。その後、新しいコントロールはまったくありません。

http://msdn.microsoft.com/en-us/library/cc265152(v=VS.95).aspx

更新: 添付されたプロパティは、テキストボックスにプロパティを直接追加しません。次のようにアクセスします。

YourClass.SetNumber( textbox, value );
int value = YourClass.GetNumber( textbox );

またはxamlで、

    <TextBox YourClass.Number="1"/>

文字列定義でもプロパティは「Number」である必要があり、「number」があります。また、Get / Set呼び出しには、テキストボックスではなくint値を指定する必要があります。

于 2012-12-11T18:07:24.150 に答える
1

TextBoxのサブクラスを作成し、それに単一のintプロパティを追加するだけです。それでいいと思います。

このコードを見て、その方法の例を確認してください。

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        panel.Children.Add(new MyTextBox { Number = 123 });
        panel.Children.Add(new MyTextBox { Number = 321 });
        panel.Children.Add(new MyTextBox { Number = 456 });
        panel.Children.Add(new MyTextBox { Number = 654 });
    }

    private void click(object sender, RoutedEventArgs e)
    {
        var myTextBoxes = panel.Children.OfType<MyTextBox>();
        var numbers = string.Empty;
        myTextBoxes.ToList().ForEach(p => numbers += p.Number + Environment.NewLine);
        MessageBox.Show(numbers);
    }
}

//Subclass of TextBox that just adds one property
public class MyTextBox : TextBox
{
    public int Number { get; set; }
}

..そしてXAMLにはパネルとボタンがあります:

<StackPanel Name="panel">
    <Button Content="Show numbers" Click="click" />
</StackPanel>
于 2012-12-11T22:04:26.303 に答える