Próbuję napisać niestandardowe okno dialogowe WiX, które w ramach przepływu pracy pokazuje obraz błędu w odpowiedzi na określone warunki. Jednak WiX wydaje się ignorować moje wymiary i wyświetlać, ponieważ czuje się dobrze. Oto mój kod:WiX nieprawidłowo renderuje obrazy
<Binary Id="WixUI_FailureImg" SourceFile="$(sys.SOURCEFILEDIR)..\Resources\Failure.ico" />
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="206" Width="16" Height="16" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
podaję fragment wyświetlonym oknie poniżej, z obrazu oryginalnego (a .ico 16x16) w tle. Jak widać, obraz został przeskalowany w górę i nie ma przezroczystości wokół obrazu. Próbowałem również ikon bitowych 8-bitowych i 24-bitowych oraz ikon, ale wszystkie dają taki sam wynik. Czy jest coś, co robię oczywiście źle?
UPDATE:
W przypadku, gdy zastanawiasz się, w jaki sposób dynamicznych obrazów prace, oto właściwy rozdział:
<Control Id="TestResult_Success" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_SuccessImg">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestPrompt_Success" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionValid)">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
<Control Id="TestPrompt_Failure" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionInvalid)">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
Jak można się domyślić z ekranu, strona jest związane z ustanawianiem połączenia SQL; Mam niestandardową akcję, która tworzy ciąg połączenia na podstawie danych wprowadzonych przez użytkownika i próbuje go zweryfikować. Jeśli jest poprawna (LOGON_VALID = "1"
), otrzymuję obraz zaznaczenia i tekst, który mówi, że wszystko jest w porządku, w przeciwnym razie pojawi się ikona ostrzeżenia i tekst ostrzegający użytkownika. Oczywiście przycisk Dalej jest również kontrolowany przez tę wartość.
zadając oddzielne pytanie .. czy wiesz, czy zmieniasz obraz dynamicznie? mam na myśli, że obraz pojawi się zgodnie z warunkiem? –
Tak; więc istnieje kontrolka TestResult_Success, która pokazuje zielony znacznik, jeśli LOGON_VALID = 1, i ukrywa go, jeśli LOGON_VALID = 0. Obrazy są tego samego rozmiaru i w tej samej lokalizacji. –
Czy możesz udostępnić kod do dynamicznej aktualizacji obrazu? –