저는 WPF를 처음 사용하고 있으며 데이터 바인딩이 작동하는 방식을 이해하려고 노력하고 있지만 많은 행운이 없습니다.WPF 데이터 바인딩에 대한 도움말
저는 간단한 작업부터 시작하려고합니다. 텍스트 상자의 내용을 내 프로그램의 문자열 변수에 바인딩하려고합니다.
데이터 바인딩, XML 네임 스페이스, 마크 업 확장, 리소스, 종속성 속성 및 기타 등등에 대한 MSDN 설명서 페이지를 많이 읽었으며 여전히 작동하지 못합니다.
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:WpfTest"
Title="MainWindow">
<Grid>
<Grid.Resources>
<c:Foo x:Key="MyFoo"/>
</Grid.Resources>
<TextBox Width="100" Height="28"
Text="{Binding Source=MyFoo,
Path=BarProperty,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
그리고 내 MainWindow.xaml.cs를 : 여기에
내 MainWindow.xaml의,namespace WpfTest
{
public class Foo : DependencyObject
{
public static readonly DependencyProperty BarProperty = DependencyProperty.Register("Bar", typeof(String), typeof(Foo));
public String Bar
{
get { return (String)GetValue(BarProperty); }
set { SetValue(BarProperty, value); }
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyFoo = new Foo { Bar = "hello" };
}
public Foo MyFoo { get; set; }
}
}
내가 텍스트 상자가 "안녕하세요"프로그램이 시작될 때 보여 기대하지만, 그것은 비어 있습니다.
누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?
당신이 읽은 경우 [데이터 바인딩 개요를 (http://msdn.microsoft.com/en-us/library/ms752347.aspx)을 아마 모든 것을 스스로 알아볼 수 있었을 것입니다 ..... –
@HB 데이터 바인딩 개요와 수많은 다른 MSDN 설명서 페이지를 읽었습니다. 사실 나는 "Creating a Binding"아래에있는 예제를 기반으로 코드를 작성했지만 작동하지 않았습니다! 그들의 모든 예제는이'Grid.Resources' 나'DockPanel.Resources' 섹션을 사용했습니다. – HighCommander4
글쎄, 그것은 'StaticResourceExtension'이나 클래스 이름없이 리소스의 키를 입력하는 일반적인 실수입니다. 두 경우 모두'Source'를 문자열로 만듭니다. 그런데 XAML에서 소스를 올바르게 만들 수는 있지만 바인딩 마크 업 확장을 사용할 수는 없지만 XML 요소 구문으로 소스를 지정할 수있는 실제 Binding 객체를 사용할 수는 있습니다. –