我試圖讓兩個窗口的內容被共享,但它似乎沒有像我期望的那樣工作。同時在兩個窗口之間共享內容
下面是一個簡單的例子示出了這樣的:
class TestClass
{
[STAThread]
public static void Main(string[] args)
{
Application app = new Application();
TextBox t = new TextBox();
t.Text = "test";
Window w1 = new Window();
w1.Content = t;
w1.Show();
Window w2 = new Window();
w2.Content = t;
w2.Show();
app.Run();
}
}
如果我通過在調試模式下程序步驟,我可以看到w1
具有文本框,但只要該呼叫w2.Content = t;
然後w1
失去文本框...然後它只出現在w2
。
我也使用Xmal位,其中兩個窗口都指向同一視圖模型結合(與命名MySharedContent屬性)
Content="{Binding Path=MySharedContent}"
嘗試,但它不工作。
這可能嗎?我在做一些愚蠢的事情嗎?我在想這兩個窗口都會有一個指向渲染內容的指針......但它幾乎看起來像不能共享同一個實例?
編輯:
所以基本的答案是,一個UI元素(文本框,用戶控件等)只能有1個父。因此,我需要有兩個獨立的UI元素共享相同的關聯數據。明白了(謝謝大家的幫助,爲大家提高票數)
UI控件通常只能是一個元素的子元素。 – Tejs
有沒有辦法解決它? 對於上面的例子,我被迫只有兩個單獨的文本框,都綁定到相同的字符串值的文本? – 00jt
這將是適當的反應。控制本身不共享;文本是語義的。 – Tejs