c# - Image shifting while displaying border around listbox item wpf -


i using listbox display images. when listbox item selected displays border around image. instead of displaying border around image shifts image towards right.

listbox style:

<style targettype="{x:type listbox}">     <setter property="itemtemplate">         <setter.value>             <datatemplate>                 <stackpanel orientation="horizontal">                     <image source="{binding path=urisource}"                          stretch="fill"                         width="639" height="530">                      </image>                  </stackpanel>              </datatemplate>          </setter.value>      </setter>      <setter property="itemspanel">          <setter.value>              <itemspaneltemplate>                  <wrappanel />              </itemspaneltemplate>           </setter.value>       </setter>       <setter property="scrollviewer.horizontalscrollbarvisibility"            value="disabled"/>       <setter property="scrollviewer.verticalscrollbarvisibility"            value="disabled"/>         <setter property="horizontalcontentalignment"             value="left"/>        <setter property="verticalcontentalignment"             value="center" /> </style> 

list box item style:

<style targettype="{x:type listboxitem}" x:key="containerstyle">    <setter property="padding" value="0,0,0,0"/>        <setter property="template">            <setter.value>                <controltemplate targettype="{x:type listboxitem}">                    <border x:name="bd"                       snapstodevicepixels="true"                       background="{templatebinding background}"                       borderbrush="{templatebinding borderbrush}"                       borderthickness="0"                       padding="{templatebinding padding}">                 <contentpresenter  horizontalalignment="{templatebinding horizontalcontentalignment}"                              verticalalignment="{templatebinding verticalcontentalignment}"                             snapstodevicepixels="{templatebinding snapstodevicepixels}"/>                     </border>                     <controltemplate.triggers>                         <trigger property="isselected" value="true">                             <setter property="borderbrush" targetname="bd" value="{staticresource bordercolor}"/>                             <setter property="borderthickness" targetname="bd" value="12" />                             <setter property="width" value="639"  />                             <setter property="height" value="530"  />                         </trigger>                         <multitrigger>                             <multitrigger.conditions>                                 <condition property="isselected" value="true"/>                                 <condition property="selector.isselectionactive" value="false"/>                             </multitrigger.conditions>                             <setter property="borderbrush" targetname="bd" value="{staticresource bordercolor}"/>                             <setter property="borderthickness" targetname="bd" value="12" />                             <setter property="width" value="639" />                             <setter property="height" value="530" />                         </multitrigger>                     </controltemplate.triggers>                 </controltemplate>             </setter.value>         </setter>     </style> 

this because in listboxitem style, you're changing border's thickness, 0 in normal case, 12 when item selected. shifts content 12pt.

you have several of possible solutions here, here 2 possibilities:

  • always use 12pt border, use transparent or {x:null} brush in unselected state
  • use 12 margin on contentpresenter, , set 0 in triggers

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -