从 wpf 页面中的组合框(在用户控件中)获取数据
Posted
技术标签:
【中文标题】从 wpf 页面中的组合框(在用户控件中)获取数据【英文标题】:Get datas from a combobox(in a usercontrol) in a wpf page 【发布时间】:2021-04-28 05:20:04 【问题描述】:在 WPF 应用程序中,我想从用户控件中的组合框获取数据并将其传递给页面中的文本块。 请注意,组合框的项目通过 EntityFramework 绑定到 SQL 表。 这是用户控件:
<UserControl x:Class="TODO_ERP_AGRO.User_Controls.BartenderFormats_CB"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="35" d:DesignWidth="800">
<StackPanel Orientation="Horizontal">
<Label Content="FORMATS BARTENDER"/>
<ComboBox x:Name="BartFormats_CB" Style="StaticResource PlainComboBoxStyle"
Width="250" IsEnabledChanged="BartFormats_CB_IsEnabledChanged"/>
</StackPanel>
</UserControl>
以及 UserControl 的 .cs
using System.Windows;
using System.Windows.Controls;
namespace TODO_ERP_AGRO.User_Controls
/// <summary>
/// Logique d'interaction pour BartenderFormats_CB.xaml
/// </summary>
public partial class BartenderFormats_CB : UserControl
public BartenderFormats_CB()
InitializeComponent();
Sql_Queries.SQLS.GetFormats_Bartender(BartFormats_CB);
public string BartenderFormat_Name
get return BartFormats_CB.SelectedItem.ToString();
set BartFormats_CB.SelectedItem = value;
private void BartFormats_CB_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
switch (((ComboBox)sender).IsEnabled)
case false:
((ComboBox)sender).SelectedIndex = -1;
break;
default:
break;
组合框绑定
public static void GetFormats_Bartender(ComboBox cb)
using (UTILITAIRESEntities dc = new UTILITAIRESEntities())
cb.ItemsSource = (from a in dc.VW_BARTENDER_FORMATS
orderby a.MODELE_ETIQ
select new
a.ET_NUMSEQ,
a.MODELE_ETIQ
).ToList();
cb.DisplayMemberPath = "MODELE_ETIQ";
cb.SelectedValuePath = "ET_NUMSEQ";
dc.Dispose();
以及 WPF 页面中的 UserContrpl
<UserControl x:Class="TODO_ERP_AGRO.User_Controls.Create_UC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ucs="clr-namespace:TODO_ERP_AGRO.User_Controls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="1100">
<Grid Background="StaticResource SombreBackground">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--#region TYPE -->
<GroupBox Header="TYPE" Style="StaticResource PlainGroupBoxStyle">
<WrapPanel Orientation="Horizontal">
<RadioButton x:Name="Bartender_RB" Content="BARTENDER"
Style="StaticResource PlainRadioButton_Style"/>
<RadioButton x:Name="Crystal_RB" Content="CRYSTAL REPORT"
Style="StaticResource PlainRadioButton_Style"/>
<RadioButton x:Name="Autre_RB" Content="Autre"
Style="StaticResource PlainRadioButton_Style"/>
</WrapPanel>
</GroupBox>
<!--#endregion-->
<!--#region Details TYPE -->
<GroupBox Header="DETAILS" Grid.Row="1">
<WrapPanel Orientation="Horizontal">
<ucs:BartenderFormats_CB/>
</WrapPanel>
</GroupBox>
<!--#endregion-->
<StackPanel Grid.Row="2">
<Button x:Name="Test_Btn" Content="TEST" Click="Test_Btn_Click" Width="50"/>
<TextBlock x:Name="TestTxtBlock"/>
</StackPanel>
</Grid>
</UserControl>
.cs
private void Test_Btn_Click(object sender, RoutedEventArgs e)
BartenderFormats_CB cb = new BartenderFormats_CB();
TestTxtBlock.Text = cb.BartFormats_CB.ToString();
当我点击按钮时,没有任何附加内容(没有错误)。 谢谢你帮助我
【问题讨论】:
【参考方案1】:当您将用户控件的实例放入窗口时,您将创建它的实例。
要访问其成员,只需为 usercontrol 分配一个名称并使用它来访问其成员。
使用此代码:
<GroupBox Header="DETAILS" Grid.Row="1">
<WrapPanel Orientation="Horizontal">
<ucs:BartenderFormats_CB x:Name="myCMB"/>
</WrapPanel>
</GroupBox>
还有你的代码:
private void Test_Btn_Click(object sender, RoutedEventArgs e)
TestTxtBlock.Text = myCMB.BartenderFormat_Name;
【讨论】:
以上是关于从 wpf 页面中的组合框(在用户控件中)获取数据的主要内容,如果未能解决你的问题,请参考以下文章