2017-11-13 5 views
1

개체를 가져 와서 표시하는 간단한 VS 2017 Extension을 만들려고합니다. 데이터가 돌아와서 텍스트 상자에 json을 표시 했으므로 데이터가 올바르게 다시 돌아올 것입니다. 그러나 어떤 이유로 gv는 데이터 세트에 두 개의 레코드가 있으므로 단어 "id"가 두 번 표시됩니다. 나는 많은 것들을 내가 잃어버린 궤도에서 벗어나려고 노력했다. 게다가 설명서가 여기 저기에있는 것 같습니다. 내가 여기에 최소 2 문제가있을 수 있으리라 생각WPF ListView/GridView Binding

...

1

) XAML은 "바인딩"바인딩 또는 LV에 데이터를 추가

2)?

위의 사항에 대한 도움을 주시면 대단히 감사하겠습니다.

XAML


<UserControl x:Class="DoWork.AllWorkVSControl" 
      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" 
      Background="{DynamicResource VsBrush.Window}" 
      Foreground="{DynamicResource VsBrush.WindowText}" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300" 
      Name="MyToolWindow"> 
    <Grid> 
     <StackPanel Orientation="Vertical"> 
      <TextBlock Margin="10" HorizontalAlignment="Center">AllWorkVS</TextBlock> 
      <Button Content="Click me!" Click="button1_Click" Width="120" Height="80" Name="button1"/> 
      <TextBox Height="200" TextWrapping="Wrap" Name="txtJson"/> 
      <ListView x:Name="LvIssues"> 
       <ListView.View> 
        <GridView> 
         <GridView.Columns> 
          <GridViewColumn Width="Auto" Header="Id" DisplayMemberBinding="{Binding Source='Id'}"></GridViewColumn> 
         </GridView.Columns> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </StackPanel> 
    </Grid> 
</UserControl> 

는 C#


public class People 
{ 
    public string Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

public partial class AllWorkVSControl : UserControl 
{ 

    public AllWorkVSControl() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     var t = Issues.GetPeopleById("2"); 
     PopulateListView(); 
     MessageBox.Show(t); 
    } 

    private void PopulateListView() 
    { 
     var l = GetPeople(); 
     txtJson.Text = JsonConvert.SerializeObject(l); 

     foreach (var p in l) 
     { 
      LvIssues.Items.Add(p); 
     } 
    } 
} 
+0

코드를 잘라 주셔서 감사합니다.하지만 우리가보아야 할 것은 잘라 냈습니다. 윈도우의 DataContext를 어디에 설정하고 있는지, 무엇을 설정하고 있는지, 창에서리스트 뷰까지의 비주얼 트리를 볼 필요가있다. – Will

+0

@ xill 부분을 업데이트했습니다. 나는 window.datacontext가 없다. 아마도 그것은 내 문제입니다. 나는 이제 "시각적 나무"를 찾으려고 노력하고 있습니다. – jharris8567

+0

PopulateListView-이 함수는 어디에 있습니까? –

답변

1

당신은 ListView.ItemsSource를 설정해야합니다.

private void PopulateListView() 
{ 
    var l = GetPeople(); 
    txtJson.Text = JsonConvert.SerializeObject(l); 

    LvIssues.ItemsSource= l; 
} 

<ListView x:Name="LvIssues"> 
      <ListView.View> 
       <GridView> 
        <GridView.Columns> 
         <GridViewColumn Width="Auto" Header="Id" DisplayMemberBinding="{Binding Id}"></GridViewColumn> 
        </GridView.Columns> 
       </GridView> 
      </ListView.View> 
     </ListView> 
+0

같은 결과를 얻는 것으로 보입니다. XAML 부분에 뭔가 빠져있는 것 같아요? 아마 DisplayMemberBinding? – jharris8567

+1

xaml binding –

+0

업데이트 됨. 나는 내가 전에 그것을 시험해 봤다라는 것을 알고있다, 그 밖의 무엇인가 외출 중이어야한다! 정말 고마워! – jharris8567