テキストボックスのようなユーザーコントロールを作成するにはどうすればよいですか?たとえば、テキストボックスコントロールのTextプロパティを変更すると、現在作業しているウィンドウに新しいテキストが表示されます。usercontrolにプロパティをアタッチしてデザイン時に更新する
私のプロジェクトでは、ユーザーが情報を入力する場所がたくさんあるため、InputFieldユーザーコントロールを作成したいと考えています。
<UserControl x:Class="PDV.UserControls.InputField"
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"
mc:Ignorable="d" >
<Grid>
<StackPanel>
<Label Content="{Binding Path=LblContent}" HorizontalAlignment="Left" VerticalAlignment="Top" />
<TextBox Height="23" Margin="5,-5,2,2" Name="textBox1" VerticalAlignment="Top" />
</StackPanel>
</Grid>
</UserControl>
とそのユーザーコントロールの背後にあるコード:
namespace PDV.UserControls
{
public partial class InputField : UserControl
{
public static DependencyProperty MessageProperty = DependencyProperty.Register(
"LblContent", typeof(string), typeof(UserControl));
public string LblContent{
get{
return (string)GetValue(MessageProperty);
}
set{
SetValue(MessageProperty, value);
}
}
//Constructor
public InputField(){
InitializeComponent();
this.DataContext = this;
}
}
}
ここ
は私のユーザーコントロールのXAMLである(つまり、ユーザーコントロールは、ラベルのカスタムスタイルを持つテキストボックスで構成します)私のメインウィンドウでは、そのユーザコントロールを次のように使用することができます:
1)そのユーザコントロールがある場所の名前空間をインポートする:
xmlns:myCtrl ="clr-namespace:PDV.UserControls"
2)そのウィンドウにそのコントロールを配置する:
<myCtrl:InputField LblContent="hello" Margin="0,0,483,0" Height="49" VerticalAlignment="Top"></myCtrl:InputField>
私はLblContent="hello"
を更新するとき、それは、ウィンドウ上でレンダリングすることをそうするように何がありますか?それはデザイン時にレンダリングすることがないだけで、ランタイム
ラベルとテキストボックスのカスタムコントロールが必要です。ラベルとテキストボックスにスタイルを適用できます。ラベルはデザイン時にレンダリングされます。 TextBoxをバインドする構文を追加する頃には、多くのキーストロークを保存しておらず、それに従うのが難しいビューコードも保存しています。 – Paparazzi
うん、私はそれを理解しようとしていた。ラベルとtextoxはスタックパネルの内側にある必要があります。私は、スタックパネルのスタイルを作成して、ラベルやスタックパネルのテキストボックスのスタイルを作成するのではなく、子どもが特定のスタイルを持つようにする方法を見つけようとしていました。新しい入力フィールドが必要になるたびに、ユーザーコントロールをドラッグするだけでなく、3つのコントロールを配置する必要がありました。 –