ReactiveUI 및 바인딩이 디버그 빌드에서는 잘 작동하지만 릴리스 빌드에서는 제대로 작동하지 않는 이상한 문제가 발생합니다.ReactiveUI UWP 앱의 릴리즈 빌드에서 바인딩이 작동하지 않습니다.
여기에 문제를 보여주는 샘플 앱 코드가 있습니다. 디버그 빌드에서 텍스트 상자에 뭔가를 입력하면 뷰 모델의 InputText 속성이 그에 따라 업데이트되고 버튼을 누르면 메시지 대화 상자에 업데이트 된 입력 텍스트가 표시됩니다. 하지만 InputText는 항상 비워두기 때문에 릴리스 빌드의 동일한 코드가 작동하지 않습니다.
여기에 무슨 일이 일어나는 지 아는 사람이 있습니까?
<Page x:Class="RxBind.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox x:Name="MyTextBox" Margin="10"/>
<Button x:Name="MyButton" Content="Show Dialog" Margin="10"/>
</StackPanel>
</Page>
public sealed partial class MainPage : IViewFor<MainPageViewModel>
{
public MainPage()
{
InitializeComponent();
ViewModel = new MainPageViewModel();
this.WhenActivated(d =>
{
d(this.BindCommand(ViewModel, vm => vm.MyButtonCommand, v => v.MyButton));
d(this.Bind(ViewModel, vm => vm.InputText, x => x.MyTextBox.Text));
});
}
#region IViewFor impl
object IViewFor.ViewModel
{
get { return ViewModel; }
set { ViewModel = (MainPageViewModel)value; }
}
public MainPageViewModel ViewModel { get; set; }
#endregion //IViewFor impl
}
public class MainPageViewModel : ReactiveObject
{
private string _inputText = string.Empty;
public string InputText
{
get { return _inputText; }
set { this.RaiseAndSetIfChanged(ref _inputText, value); }
}
public ReactiveCommand<Unit, Unit> MyButtonCommand { get; }
public MainPageViewModel()
{
MyButtonCommand = ReactiveCommand.CreateFromTask(async() =>
{
await new MessageDialog($"InputText={InputText}").ShowAsync();
});
}
}
@Sunteen Wu 실제로 위를 시도해보고 재현하기에 충분하지 않다는 결론에 도달 했습니까? 위 코드는 필자의 샘플 프로젝트에서 코딩 한 문자 그대로 * 단 하나의 행만 빠뜨린 코드가 아닙니다. –
최신 UWP 및 .NET Native 도구에서도 문제를 재현 할 수 있습니다. 그것은 https://github.com/reactiveui/ReactiveUI/issues/1330과 유사합니다. 나는이 문제에 관심이 있습니다. 토론에 참여하거나 [email protected]으로 전자 메일을 보내주십시오. 나를 파헤 치기까지 하루 이틀이 걸릴 것입니다. –
죄송합니다. 내 잘못입니다. 테스트 할 때'ReactiveUI' 제 3 자 패키지를 놓치 셨습니다. 삭제되었습니다. –