WPF의 목록 상자 안에 텍스트 상자 목록 바인딩
-
21-12-2019 - |
문제
텍스트 상자가 포함된 목록 상자를 만들어야 합니다.그리고 그것은 역동적이어야 합니다.코드 뒤에 관찰 가능한 컬렉션이 있고 이를 목록 상자에 바인딩하고 싶습니다.동적 목록 상자를 원하며 이 목록에는 편집 가능한 텍스트 상자가 있어야 합니다.그래서 기본적으로 목록 상자에서 multiplr 텍스트 상자를 바인딩하고 싶습니다.어떤 도움이라도 주시면 감사하겠습니다.
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
이렇게 하면 관찰 가능한 컬렉션의 항목과 동일한 텍스트 상자 수가 있지만 텍스트 상자의 텍스트가 설정되지 않습니다.
해결책
텍스트 상자를 클래스의 속성에 바인딩해야
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Binding="{Binding PROPERTYINCLASS}"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
. 다른 팁
귀하의 항목이 ObservableCollection
그냥 평범하다 string
s를 사용하면 다음과 같이 전체 문자열 값에 데이터 바인딩할 수 있습니다.
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
로부터 Binding.Path
재산 MSDN 페이지:
선택적으로 마침표(.) 경로를 사용하여 현재 소스에 바인딩할 수 있습니다.예를 들어,
Text="{Binding}"
는 다음과 같습니다Text="{Binding Path=.}"
.
컬렉션에 속성이 있는 개체가 있는 경우 관련 속성 이름을 참조해야 하므로 @nit의 답변이 정확했을 것입니다.
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding PropertyName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
제휴하지 않습니다 StackOverflow