【发布时间】:2022-06-23 01:38:41
【问题描述】:
我有一个带有文本块的 UserControl elem,我想从 MainWindow 更改其中的文本 用户控件类:
public void textBlockFilling(long id)
{
var selectedProducts = from p in db.Products
where p.ProductID == id
select p;
IEnumerable<TypesOfProduct> type = GetType(id);
textBlockName.Text = textBlockName.Text.Split(':')[0];
textBlockName.Text += ": " + selectedProducts.First().ProductName;
}
主窗口:
void SearchString_OnSelect(object sender, SelectionChanged e)
{
if (e.Value != null)
{
Product product = e.Value as Product;
ProductsView pa = new ProductsView();
pa.textBlockFilling(product.ProductID);
}
}
但文字没有改变 -_-; 然后我找到了另一种方法: UC班:
private delegate void NameCallBack(long varText);
public void UpdateTextBox(long input)
{
db = new ApplicationContext();
if (!Dispatcher.CheckAccess())
{
textBlockName.Dispatcher.BeginInvoke(new NameCallBack(UpdateTextBox), new object[] { input });
}
else
{
if (db.Products == null) return;
var selectedProducts = from p in db.Products
where p.ProductID == input
select p;
textBlockName.Text = textBlockName.Text.Split(':')[0];
textBlockName.Text = ": " + selectedProducts.First().ProductName;
}
}
主窗口:
public static readonly ProductsView ProductsLogWindow = new ProductsView();
void SearchString_OnSelect(object sender, SelectionChanged e)
{
if (e.Value != null)
{
Product product = e.Value as Product;
ProductsLogWindow.textBlockFilling(product.ProductID);
}
}
但它仍然没有工作。你能解释一下我做错了什么吗?
【问题讨论】: