Что делать, если я хочу, чтобы текстовое поле представляло в реальном времени значение счетчика циклов в wpf?счетчик времени в реальном времени ouput wpf
Добавление данных рабочего раствора:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private delegate void UpdateTextBox(DependencyProperty dp, Object value);
...
private void MyMethod()
{
...
int iMax=...;
...
MyClass iMyClass = new MyClass(arguments);
this.DataContext = iMyClass;
UpdateTextBox updateTBox = new UpdateTextBox(textBlock1.SetValue);
for (int i = 1; i <= iMax; i++)
{
iMyClass.MyClassMethod(i);
Dispatcher.Invoke(updateTBox, System.Windows.Threading.DispatcherPriority.Background, new object[] { MyClass.MyPropertyProperty, iMyClass.myProperty });
}
Вот код, который я пытался в соответствии с вашим предложением, но он не работает, я получаю «0» написано в текстовом поле, поэтому я полагаю, что связывание в порядке, но цикл не работает. Я также сделал цикл для записи в другое текстовое поле непосредственно через textbox2.text = "a" внутри цикла, но он тоже не работал.
/// <summary>
/// Interaction logic for Window1.xaml
/// DOESNT WORK PROPERLY
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
TestClass tTest = new TestClass();
this.DataContext = tTest ;
tTest.StartLoop();
}
}
public class TestClass : DependencyObject
{
public TestClass()
{
bwLoop = new BackgroundWorker();
bwLoop.DoWork += (sender, args) =>
{
// do your loop here -- this happens in a separate thread
for (int i = 0; i < 10000; i++)
{
LoopCounter=i;
}
};
}
BackgroundWorker bwLoop;
public int LoopCounter
{
get { return (int)GetValue(LoopCounterProperty); }
set { SetValue(LoopCounterProperty, value); }
}
public static readonly DependencyProperty LoopCounterProperty = DependencyProperty.Register("LoopCounter", typeof(int), typeof(TestClass));
public void StartLoop()
{
bwLoop.RunWorkerAsync();
}
}
}
я сумел сделать это с DependancyProperty и диспетчером .Invoke. Не могли бы вы подробнее рассказать о первой возможности - запустить цикл в фоновом процессе и написать счетчик циклов в свойстве зависимости. это отличается от того, что я сделал? – butaro
Я добавил пример кода, чтобы вы могли сравнить его с вашим кодом. Если вы добавите свой код в свой вопрос, я могу прокомментировать его. – Heinzi
Я сделал, ясно, что я сделал? – butaro