【问题标题】:How to Bind dynamic values in Xaml using WPF in c#如何在 C# 中使用 WPF 在 Xaml 中绑定动态值
【发布时间】:2017-04-19 21:11:08
【问题描述】:

我在 WPF 中创建了具有两个窗口的应用程序。在一个窗口中,我使用了一个文本框和提交按钮。从第一个窗口提交后,我隐藏第一个窗口并显示第二个窗口。我已经使用第一个窗口文本值获取了一些值,并且需要在第二个窗口 Xaml 中绑定。实际上,这些值可以在 html(mvc) 中使用 foreach 进行绑定,但需要绑定 Xaml 才能在第二个窗口中显示。请给点建议。

【问题讨论】:

  • ItemsControl 是绑定到对象列表的标准方法。将ItemsSource 设置为您的对象列表,并创建一个DataTemplate 来控制每个项目的视觉元素。
  • 没问题,来自第一个窗口的数据应该已经在某个视图模型中。在另一个窗口中使用该视图模型。就是这样。
  • 很好 .. 谢谢@BradleyUffner ..
  • 感谢@Divisadero 的建议
  • @ArunD 没问题,如果您需要更多关于如何操作的信息,请告诉我

标签: c# wpf xaml


【解决方案1】:

请找到下面的答案,它肯定会起作用

Xaml:

<ItemsControl Name="icTodoList">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Grid Margin="200,50,0,30">
                                    <TextBlock>
                                       <Hyperlink TextDecorations="None" NavigateUri="{Binding UriPath}" RequestNavigate="Hyperlink_RequestNavigate"
                                                  CommandParameter="{Binding ElementName=myImg}">
                                                        <Image HorizontalAlignment="Left" Width="80" Height="80"  x:Name="myImg" Source="{Binding Source}" Margin="5"/>
                                       </Hyperlink>
                                    </TextBlock>

                                    <TextBlock TextAlignment="Left" Margin="200,30,0,0">
                                            <TextBlock FontSize="22px" Text="{Binding Title}" Foreground="white"></TextBlock>
                                    </TextBlock>
                                </Grid>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>

用于绑定值的 C# 代码,

 public class DMScreen3 {
    public List<string> AllFiles { get; set; }
              List<BindingFilesContent> items = new List<BindingFilesContent>();
                    if(AllFiles != null)
                    {
                        foreach(var r in AllFiles)
                        {
                            if ((r.ToLower().Contains(".avi") || r.ToLower().Contains(".mp4")) && fileTypes == "video")
                            {
                                items.Add(new BindingFilesContent() { Title = Path.GetFileName(r), UriPath = r, Source = "/images/videoicon.png" });
                            }
        icTodoList.ItemsSource = items;
                  }
        }
}
  public class BindingFilesContent
    {
        public string Title { get; set; }
        public string Source { get; set; }
        public string UriPath { get; set; }
    }

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多