이 질문을하는 방법에 대해서는 조금 확신이 없습니다.
업데이트 코드 샘플이 포함되었습니다.UWP - TextBlock.Text가 이벤트별로 변경된 매 시간 값을 업데이트하지 않습니다.
'재미있는'UWP 애플리케이션을 구축하고 있습니다. 컬렉션의 각 항목에 대해 작업을 수행하는 사용자 시작 작업이 있습니다. 이 상황이 진행됨에 따라 사용자에게 계속 진행 상황을 알리고 싶습니다.
과거에 (Winforms) 나를 위해 일한 접근 방식은 항목을 처리 할 때마다 이벤트를 시작하고 텍스트 상자의 텍스트를 업데이트하는 것입니다. 내 UWP 코드는 앞의 동작이 아닌 마지막 동작의 '상태'만 표시한다는 점을 제외하고는 정상적으로 작동합니다.
질문 :이게 완전히 잘못된 것입니까? 내가 사용했던 또 다른 방법은 논리의 '상태'속성을 업데이트하고, UI 실행하는 것입니다, 참고
(나는 내가 할 경우, 때 .refresh()는 1990 년 조금 보인다 놀랄 것) 현재 상태에 대한 논리를 폴링하는 타이머 (즉, 논리 내부의 이벤트가 아닌 특정 시점에 상태를 표시). 난 아직 어떤 UWP 애플 리케이션에서 이것을 시도 할 시간이 없었어요.
나는이 두 번째 방법이 '더 좋다'는 말을하게되어 기쁩니다. 그러나 첫 번째 방법이 왜 효과가 없는지에 대해 더 자세히 이해하고 싶습니다.
첫째 거기에 무거운 리프팅 핸들이 클래스 :
public class Enigma1Device : IEnigmaDevice
{
public event CharacterEnciphered OnCharacterEnciphered;
public string TypeMessage(string message)
{
StringBuilder output = new StringBuilder();
char[] chars = message.ToCharArray();
char temp;
if (OnCharacterEnciphered != null)
{
for (int c = 0; c < chars.Length; c++)
{
if (ValidInput(chars[c]))
{
temp = ProcessLetter(chars[c], c + 1);
output.Append(temp);
OnCharacterEnciphered(temp);
}
}
}
else
{
...
}
return output.ToString();
}
}
그리고이 호출하는 XAML 페이지 :
public sealed partial class Enigma1Page : Page
{
public Enigma1Device EnigmaDevice;
private void Page_Loaded(object sender, RoutedEventArgs e)
{
EnigmaDevice = new Enigma1Device();
EnigmaDevice.OnCharacterEnciphered += EnigmaDevice_OnCharacterEnciphered;
}
private void stdEnigmaKeyboard_OnHereIsSomeTextToEncipher(string plaintext)
{
txtOutput.Text = EnigmaDevice.TypeMessage(plaintext);
}
private void EnigmaDevice_OnCharacterEnciphered(char l)
{
txtStatus.Text = l.ToString();
}
}
우리는 당신이 무엇을했는지에 대한 코드를 보여주지 않고는 도움을 줄 수 없습니다. [mvce] (http://stackoverflow.com/help/mcve). 또한 알아 두어야 할 중요한 점은 바인딩이나 무결성 코드 (mvvm) 뒤에 일반 코드를 사용하는 경우입니다. – Bart
Ehhh 코드가 없으면 올바르게 접근하고 있는지 알려줄 수 있습니다. –
예, 약간 헛소리였습니다. 일부 코드가 제공됩니다. –