我的WPF應用程序代碼生成在.cs文件中定義的function call
上的面板。在代碼中使用ItemControl
來生成這些。我想要在此ItemControl
中定義名稱文本框並在代碼中使用它。我將它命名爲textEdit1
並在代碼中使用它,但代碼生成的錯誤textEdit1
不存在。有誰能解決我的問題嗎?下面的代碼是:ItemsControl文本框名稱在.cs文件中不工作
XAML文件:
<dxlc:ScrollBox>
<ItemsControl Name="lstPanels">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="vertical">
<Grid>
<dxe:TextEdit Height="165" Text="{Binding Text,
Mode=TwoWay}" x:Name="textEdit1"/>
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</dxlc:ScrollBox>
cs文件
public partial class Window1 : Window
{
string valuu;
public Window1()
{
InitializeComponent();
addPanel("Header1");
addPanel("Header2");
addPanel("Header3");
lstPanels.ItemsSource = panels;
}
public ObservableCollection<MyPanel> panels = new ObservableCollection<MyPanel>();
public void addPanel(string buttonId)
{
MyPanel p = new MyPanel { Id = buttonId};
panels.Add(p);
functionb(p);
}
public void functionb(MyPanel obj)
{
valuu = obj.Text;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
foreach (var f in panels.ToList())
{
MessageBox.Show(f.Id + " *** " + f.Text);
}
}
}
public class MyPanel : INotifyPropertyChanged
{
private string _id;
private string _text;
public string Id
{
get { return _id; }
set
{
if (value != _id)
{
_id = value;
NotifyPropertyChanged();
}
}
}
public string Text
{
get { return _text; }
set
{
if (value != _text)
{
_text = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged( String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
感謝您的迴應!丹尼爾我正在使用Devexpress TextEdit。它的所有屬性都與WPF中的TextBox相似!好的,你有沒有讀過我的評論'好吧,讓我解釋一下:ItemControl中有面板,每個面板都有唯一的ID,但是頭部相同。現在在每個面板中都有一個文本框和一個滑塊。所選滑塊將增加其面板中文本的字體大小。如何獲取此面板的所選Slider以將更改應用於textbox.Text,因爲有很多面板? 「我需要所有這些與textbox.Text一起玩。通過使用滑塊和按鈕增加字體大小,對齊等。 – user2835256
嗯,我想你最好的選擇是使用我描述的第三個選項。 –
我用標籤來獲取選定的滑塊現在問題是如何獲得該選定的滑塊面板的textbox.Text? – user2835256