Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将用户选择的文件名绑定到xml数据提供程序源_C#_Wpf_Xaml_Xmldataprovider - Fatal编程技术网

C# 将用户选择的文件名绑定到xml数据提供程序源

C# 将用户选择的文件名绑定到xml数据提供程序源,c#,wpf,xaml,xmldataprovider,C#,Wpf,Xaml,Xmldataprovider,我希望允许用户选择一个xml文件(通过单击菜单项),然后尽可能使用codebehind中的xml数据提供程序对其进行处理。我该怎么做 我不能像这样绑定源代码: 我知道我可以通过单击处理程序或菜单项上的类似程序来处理xml。这是一个小示例,希望对您有所帮助。 您只需使用菜单项单击事件更新按钮代码的单击事件 主窗口 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/20

我希望允许用户选择一个xml文件(通过单击菜单项),然后尽可能使用codebehind中的xml数据提供程序对其进行处理。我该怎么做

我不能像这样绑定源代码:


我知道我可以通过单击处理程序或菜单项上的类似程序来处理xml。

这是一个小示例,希望对您有所帮助。 您只需使用菜单项单击事件更新按钮代码的单击事件

主窗口

<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
    <Button Content="Button" HorizontalAlignment="Left" Margin="228,80,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
    <Label Content="Label" Name="lblXmlFileName" HorizontalAlignment="Left" Margin="57,78,0,0" VerticalAlignment="Top" Width="144"/>
    <StackPanel x:Name="stackpanel1">
        <StackPanel.Resources>
        <XmlDataProvider x:Name="provider" x:Key="provider1">
            </XmlDataProvider>
        </StackPanel.Resources>
    </StackPanel>
</Grid>

我想您应该在codebehind编写将xml文件绑定到xmlDataprovider的代码。“XmlDataProvider provider=new XmlDataProvider();provider.Source=“您上传的文件uri。”如何将此提供程序设置为xaml中定义的提供程序?例如,我在stackpanel的资源中定义了一个XmlDataProvider
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {   
// update validations as per your requirements...
            var dialog = new OpenFileDialog();
            dialog.Filter = "XML Files|*.xml";
            if (dialog.ShowDialog() == true)
            {   
                lblXmlFileName.Content = dialog.FileName.ToString();
                var provider1 = (XmlDataProvider) stackpanel1.Resources["provider1"];
                if(provider1 != null)
                 provider1.Source = new Uri(dialog.FileName, UriKind.Absolute);
            }
        }
    }